diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..1638500353d47380d87cbf5ac10ee8bee9419e39 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +extensions-builtin/sd-webui-agent-scheduler/docs/images/walkthrough.png filter=lfs diff=lfs merge=lfs -text +extensions-builtin/stable-diffusion-webui-rembg/preview.png filter=lfs diff=lfs merge=lfs -text +javascript/notosans-nerdfont-regular.ttf filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..3e5d7807eb4ea23b1e1c53c227ec3b8bfff9f3ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,68 @@ +# defaults +__pycache__ +.ruff_cache +/cache.json +/*.json +/*.yaml +/params.txt +/styles.csv +/user.css +/webui-user.bat +/webui-user.sh +/html/extensions.json +/html/themes.json +node_modules +pnpm-lock.yaml +package-lock.json +venv +.history +cache +**/.DS_Store + +# all models and temp files +*.log +*.log.* +*.bak +*.ckpt +*.safetensors +*.pth +*.pt +*.bin +*.optim +*.lock +*.zip +*.rar +*.7z +*.pyc +/*.bat +/*.sh +/*.txt +/*.mp3 +/*.lnk +!webui.bat +!webui.sh +!package.json + +# all dynamic stuff +/extensions/**/* +/outputs/**/* +/embeddings/**/* +/models/**/* +/interrogate/**/* +/train/log/**/* +/textual_inversion/**/* +/detected_maps/**/* +/tmp +/log +/cert +.vscode/ +.idea/ +/localizations + +.*/ + +# force included +!/models/VAE-approx +!/models/VAE-approx/model.pt +!/models/Reference +!/models/Reference/**/* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..213f3412c5c2c128ee12b594517308f5b4194064 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,32 @@ +[submodule "wiki"] + path = wiki + url = https://github.com/vladmandic/automatic.wiki + ignore = dirty +[submodule "modules/k-diffusion"] + path = modules/k-diffusion + url = https://github.com/crowsonkb/k-diffusion + ignore = dirty +[submodule "extensions-builtin/sd-extension-system-info"] + path = extensions-builtin/sd-extension-system-info + url = https://github.com/vladmandic/sd-extension-system-info + ignore = dirty +[submodule "extensions-builtin/sd-extension-chainner"] + path = extensions-builtin/sd-extension-chainner + url = https://github.com/vladmandic/sd-extension-chainner + ignore = dirty +[submodule "extensions-builtin/stable-diffusion-webui-rembg"] + path = extensions-builtin/stable-diffusion-webui-rembg + url = https://github.com/vladmandic/sd-extension-rembg + ignore = dirty +[submodule "extensions-builtin/stable-diffusion-webui-images-browser"] + path = extensions-builtin/stable-diffusion-webui-images-browser + url = https://github.com/AlUlkesh/stable-diffusion-webui-images-browser + ignore = dirty +[submodule "extensions-builtin/sd-webui-controlnet"] + path = extensions-builtin/sd-webui-controlnet + url = https://github.com/Mikubill/sd-webui-controlnet + ignore = dirty +[submodule "extensions-builtin/sd-webui-agent-scheduler"] + path = extensions-builtin/sd-webui-agent-scheduler + url = https://github.com/ArtVentureX/sd-webui-agent-scheduler + ignore = dirty diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000000000000000000000000000000000000..977fd68e95f2269bef17b8fe3831f661403dad34 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,237 @@ +[MAIN] +analyse-fallback-blocks=no +clear-cache-post-run=no +#enable-all-extensions= +#errors-only= +#exit-zero= +extension-pkg-allow-list= +extension-pkg-whitelist= +fail-on= +fail-under=10 +ignore=CVS +ignore-paths=/usr/lib/.*$, + ^repositories/.*$, + ^extensions/.*$, + ^extensions-builtin/.*$, + ^modules/dml/.*$, + ^modules/tcd/.*$, + ^modules/xadapters/.*$, +ignore-patterns= +ignored-modules= +jobs=0 +limit-inference-results=100 +load-plugins= +persistent=yes +py-version=3.10 +recursive=no +source-roots= +suggestion-mode=yes +unsafe-load-any-extension=no +#verbose= + +[BASIC] +argument-naming-style=snake_case +#argument-rgx= +attr-naming-style=snake_case +#attr-rgx= +bad-names=foo, bar, baz, toto, tutu, tata +bad-names-rgxs= +class-attribute-naming-style=any +class-const-naming-style=UPPER_CASE +#class-const-rgx= +class-naming-style=PascalCase +#class-rgx= +const-naming-style=snake_case +#const-rgx= +docstring-min-length=-1 +function-naming-style=snake_case +#function-rgx= +# Good variable names which should always be accepted, separated by a comma. +good-names=i,j,k,e,ex,ok,p +good-names-rgxs= +include-naming-hint=no +inlinevar-naming-style=any +#inlinevar-rgx= +method-naming-style=snake_case +#method-rgx= +module-naming-style=snake_case +#module-rgx= +name-group= +no-docstring-rgx=^_ +property-classes=abc.abstractproperty +#typealias-rgx= +#typevar-rgx= +variable-naming-style=snake_case +#variable-rgx= + +[CLASSES] +check-protected-access-in-special-methods=no +defining-attr-methods=__init__, + __new__, + setUp, + asyncSetUp, + __post_init__ +exclude-protected=_asdict,_fields,_replace,_source,_make,os._exit +valid-classmethod-first-arg=cls +valid-metaclass-classmethod-first-arg=mcs + +[DESIGN] +exclude-too-few-public-methods= +ignored-parents= +max-args=99 +max-attributes=99 +max-bool-expr=99 +max-branches=99 +max-locals=99 +max-parents=99 +max-public-methods=99 +max-returns=99 +max-statements=199 +min-public-methods=1 + +[EXCEPTIONS] +overgeneral-exceptions=builtins.BaseException,builtins.Exception + +[FORMAT] +expected-line-ending-format= +ignore-long-lines=^\s*(# )??$ +indent-after-paren=4 +indent-string=' ' +max-line-length=200 +max-module-lines=9999 +single-line-class-stmt=no +single-line-if-stmt=no + +[IMPORTS] +allow-any-import-level= +allow-reexport-from-package=no +allow-wildcard-with-all=no +deprecated-modules= +ext-import-graph= +import-graph= +int-import-graph= +known-standard-library= +known-third-party=enchant +preferred-modules= + +[LOGGING] +logging-format-style=new +logging-modules=logging + +[MESSAGES CONTROL] +confidence=HIGH, + CONTROL_FLOW, + INFERENCE, + INFERENCE_FAILURE, + UNDEFINED +# disable=C,R,W +disable=bad-inline-option, + bare-except, + broad-exception-caught, + chained-comparison, + consider-iterating-dictionary, + consider-using-dict-items, + consider-using-generator, + consider-using-enumerate, + consider-using-sys-exit, + consider-using-from-import, + consider-using-get, + consider-using-in, + consider-using-min-builtin, + dangerous-default-value, + deprecated-pragma, + duplicate-code, + file-ignored, + import-error, + import-outside-toplevel, + invalid-name, + line-too-long, + locally-disabled, + logging-fstring-interpolation, + missing-class-docstring, + missing-function-docstring, + missing-module-docstring, + no-else-return, + not-callable, + pointless-string-statement, + raw-checker-failed, + simplifiable-if-expression, + suppressed-message, + too-many-nested-blocks, + too-few-public-methods, + too-many-statements, + too-many-locals, + too-many-instance-attributes, + unnecessary-dunder-call, + unnecessary-lambda, + use-dict-literal, + use-symbolic-message-instead, + useless-suppression, + unidiomatic-typecheck, + wrong-import-position +enable=c-extension-no-member + +[METHOD_ARGS] +timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request + +[MISCELLANEOUS] +notes=FIXME, + XXX, + TODO +notes-rgx= + +[REFACTORING] +max-nested-blocks=5 +never-returning-functions=sys.exit,argparse.parse_error + +[REPORTS] +evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) +msg-template= +#output-format= +reports=no +score=no + +[SIMILARITIES] +ignore-comments=yes +ignore-docstrings=yes +ignore-imports=yes +ignore-signatures=yes +min-similarity-lines=4 + +[SPELLING] +max-spelling-suggestions=4 +spelling-dict= +spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: +spelling-ignore-words= +spelling-private-dict-file= +spelling-store-unknown-words=no + +[STRING] +check-quote-consistency=no +check-str-concat-over-line-jumps=no + +[TYPECHECK] +contextmanager-decorators=contextlib.contextmanager +generated-members=numpy.*,logging.*,torch.*,cv2.* +ignore-none=yes +ignore-on-opaque-inference=yes +ignored-checks-for-mixins=no-member, + not-async-context-manager, + not-context-manager, + attribute-defined-outside-init +ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace +missing-member-hint=yes +missing-member-hint-distance=1 +missing-member-max-choices=1 +mixin-class-rgx=.*[Mm]ixin +signature-mutators= + +[VARIABLES] +additional-builtins= +allow-global-unused-variables=yes +allowed-redefined-builtins= +callbacks=cb_, +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ +ignored-argument-names=_.*|^ignored_|^unused_ +init-import=no +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..7cc802dd7585bfd84b4ae4c07b2ccf94e38c8b4a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2237 @@ +# Change Log for SD.Next + +## TODO + +- reference styles +- quick apply style + +## Update for 2024-03-19 + +### Highlights 2024-03-19 + +New models: +- [Stable Cascade](https://github.com/Stability-AI/StableCascade) *Full* and *Lite* +- [Playground v2.5](https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic) +- [KOALA 700M](https://github.com/youngwanLEE/sdxl-koala) +- [Stable Video Diffusion XT 1.1](https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt-1-1) +- [VGen](https://huggingface.co/ali-vilab/i2vgen-xl) + +New pipelines and features: +- Img2img using [LEdit++](https://leditsplusplus-project.static.hf.space/index.html), context aware method with image analysis and positive/negative prompt handling +- Trajectory Consistency Distillation [TCD](https://mhh0318.github.io/tcd) for processing in even less steps +- Visual Query & Answer using [moondream2](https://github.com/vikhyat/moondream) as an addition to standard interrogate methods +- **Face-HiRes**: simple built-in detailer for face refinements +- Even simpler outpaint: when resizing image, simply pick outpaint method and if image has different aspect ratio, blank areas will be outpainted! +- UI aspect-ratio controls and other UI improvements +- User controllable invisibile and visible watermarking +- Native composable LoRA + +What else? + +- **Reference models**: *Networks -> Models -> Reference*: All reference models now come with recommended settings that can be auto-applied if desired +- **Styles**: Not just for prompts! Styles can apply *generate parameters* as templates and can be used to *apply wildcards* to prompts +improvements, Additional API endpoints +- Given the high interest in [ZLUDA](https://github.com/vosen/ZLUDA) engine introduced in last release we've updated much more flexible/automatic install procedure (see [wiki](https://github.com/vladmandic/automatic/wiki/ZLUDA) for details) +- Plus Additional Improvements such as: Smooth tiling, Refine/HiRes workflow improvements, Control workflow + +Further details: +- For basic instructions, see [README](https://github.com/vladmandic/automatic/blob/master/README.md) +- For more details on all new features see full [CHANGELOG](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) +- For documentation, see [WiKi](https://github.com/vladmandic/automatic/wiki) +- [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) server + +### Full Changelog 2024-03-19 + +- [Stable Cascade](https://github.com/Stability-AI/StableCascade) *Full* and *Lite* + - large multi-stage high-quality model from warp-ai/wuerstchen team and released by stabilityai + - download using networks -> reference + - see [wiki](https://github.com/vladmandic/automatic/wiki/Stable-Cascade) for details +- [Playground v2.5](https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic) + - new model version from Playground: based on SDXL, but with some cool new concepts + - download using networks -> reference + - set sampler to *DPM++ 2M EDM* or *Euler EDM* +- [KOALA 700M](https://github.com/youngwanLEE/sdxl-koala) + - another very fast & light sdxl model where original unet was compressed and distilled to 54% of original size + - download using networks -> reference + - *note* to download fp16 variant (recommended), set settings -> diffusers -> preferred model variant +- [LEdit++](https://leditsplusplus-project.static.hf.space/index.html) + - context aware img2img method with image analysis and positive/negative prompt handling + - enable via img2img -> scripts -> ledit + - uses following params from standard img2img: cfg scale (recommended ~3), steps (recommended ~50), denoise strength (recommended ~0.7) + - can use postive and/or negative prompt to guide editing process + - positive prompt: what to enhance, strength and threshold for auto-masking + - negative prompt: what to remove, strength and threshold for auto-masking + - *note*: not compatible with model offloading +- **Second Pass / Refine** + - independent upscale and hires options: run hires without upscale or upscale without hires or both + - upscale can now run 0.1-8.0 scale and will also run if enabled at 1.0 to allow for upscalers that simply improve image quality + - update ui section to reflect changes + - *note*: behavior using backend:original is unchanged for backwards compatibilty +- **Visual Query** visual query & answer in process tab + - go to process -> visual query + - ask your questions, e.g. "describe the image", "what is behind the subject", "what are predominant colors of the image?" + - primary model is [moondream2](https://github.com/vikhyat/moondream), a *tiny* 1.86B vision language model + *note*: its still 3.7GB in size, so not really tiny + - additional support for multiple variations of several base models: *GIT, BLIP, ViLT, PIX*, sizes range from 0.3 to 1.7GB +- **Video** + - **Image2Video** + - new module for creating videos from images + - simply enable from *img2img -> scripts -> image2video* + - model is auto-downloaded on first use + - based on [VGen](https://huggingface.co/ali-vilab/i2vgen-xl) + - **Stable Video Diffusion** + - updated with *SVD 1.0, SVD XT 1.0 and SVD XT 1.1* + - models are auto-downloaded on first use + - simply enable from *img2img -> scripts -> stable video diffusion* + - for svd 1.0, use frames=~14, for xt models use frames=~25 +- **Composable LoRA**, thanks @AI-Casanova + - control lora strength for each step + for example: `` means strength=0.1 for step at 0% and intepolate towards strength=0.9 for step at 100% + - *note*: this is a very experimental feature and may not work as expected +- **Control** + - added *refiner/hires* workflows + - added resize methods to before/after/mask: fixed, crop, fill +- **Styles**: styles are not just for prompts! + - new styles editor: *networks -> styles -> edit* + - styles can apply generate parameters, for example to have a style that enables and configures hires: + parameters=`enable_hr: True, hr_scale: 2, hr_upscaler: Latent Bilinear antialias, hr_sampler_name: DEIS, hr_second_pass_steps: 20, denoising_strength: 0.5` + - styles can apply wildcards to prompts, for example: + wildcards=`movie=mad max, dune, star wars, star trek; intricate=realistic, color sketch, pencil sketch, intricate` + - as usual, you can apply any number of styles so you can choose which settings are applied and in which order and which wildcards are used +- **UI** + - *aspect-ratio** add selector and lock to width/height control + allowed aspect ration can be configured via *settings -> user interface* + - *interrogate* tab is now merged into *process* tab + - *image viewer* now displays image metadata + - *themes* improve on-the-fly switching + - *log monitor* flag server warnings/errors and overall improve display + - *control* separate processor settings from unit settings +- **Face HiRes** + - new *face restore* option, works similar to well-known *adetailer* by running an inpaint on detected faces but with just a checkbox to enable/disable + - set as default face restorer in settings -> postprocessing + - disabled by default, to enable simply check *face restore* in your generate advanced settings + - strength, steps and sampler are set using by hires section in refine menu + - strength can be overriden in settings -> postprocessing + - will use secondary prompt and secondary negative prompt if present in refine +- **Watermarking** + - SD.Next disables all known watermarks in models, but does allow user to set custom watermark + - see *settings -> image options -> watermarking* + - invisible watermark: using steganogephy + - image watermark: overlaid on top of image +- **Reference models** + - additional reference models available for single-click download & run: + *Stable Cascade, Stable Cascade lite, Stable Video Diffusion XT 1.1* + - reference models will now download *fp16* variation by default + - reference models will print recommended settings to log if present + - new setting in extra network: *use reference values when available* + disabled by default, if enabled will force use of reference settings for models that have them +- **Samplers** + - [TCD](https://mhh0318.github.io/tcd/): Trajectory Consistency Distillation + new sampler that produces consistent results in a very low number of steps (comparable to LCM but without reliance on LoRA) + for best results, use with TCD LoRA: + - *DPM++ 2M EDM* and *Euler EDM* + EDM is a new solver algorithm currently available for DPM++2M and Euler samplers + Note that using EDM samplers with non-EDM optimized models will provide just noise and vice-versa +- **Improvements** + - **FaceID** extend support for LoRA, HyperTile and FreeU, thanks @Trojaner + - **Tiling** now extends to both Unet and VAE producing smoother outputs, thanks @AI-Casanova + - new setting in image options: *include mask in output* + - improved params parsing from from prompt string and styles + - default theme updates and additional built-in theme *black-gray* + - support models with their own YAML model config files + - support models with their own JSON per-component config files, for example: `playground-v2.5_vae.config` + - prompt can have comments enclosed with `/*` and `*/` + comments are extracted from prompt and added to image metadata +- **ROCm** + - add **ROCm** 6.0 nightly option to installer, thanks @jicka + - add *flash attention* support for rdna3, thanks @Disty0 + install flash_attn package for rdna3 manually and enable *flash attention* from *compute settings* + to install flash_attn, activate the venv and run `pip install -U git+https://github.com/ROCm/flash-attention@howiejay/navi_support` +- **IPEX** + - disabled IPEX Optimize by default +- **API** + - add preprocessor api endpoints + GET:`/sdapi/v1/preprocessors`, POST:`/sdapi/v1/preprocess`, sample script:`cli/simple-preprocess.py` + - add masking api endpoints + GET:`/sdapi/v1/masking`, POST:`/sdapi/v1/mask`, sample script:`cli/simple-mask.py` +- **Internal** + - improved vram efficiency for model compile, thanks @Disty0 + - **stable-fast** compatibility with torch 2.2.1 + - remove obsolete textual inversion training code + - remove obsolete hypernetworks training code +- **Refiner** validated workflows: + - Fully functional: SD15 + SD15, SDXL + SDXL, SDXL + SDXL-R + - Functional, but result is not as good: SD15 + SDXL, SDXL + SD15, SD15 + SDXL-R +- **SDXL Lightning** models just-work, just makes sure to set CFG Scale to 0 + and choose a best-suited sampler, it may not be the one you're used to (e.g. maybe even basic Euler) +- **Fixes** + - improve *model cpu offload* compatibility + - improve *model sequential offload* compatibility + - improve *bfloat16* compatibility + - improve *xformers* installer to match cuda version and install triton + - fix extra networks refresh + - fix *sdp memory attention* in backend original + - fix autodetect sd21 models + - fix api info endpoint + - fix *sampler eta* in xyz grid, thanks @AI-Casanova + - fix *requires_aesthetics_score* errors + - fix t2i-canny + - fix *differenital diffusion* for manual mask, thanks @23pennies + - fix ipadapter apply/unapply on batch runs + - fix control with multiple units and override images + - fix control with hires + - fix control-lllite + - fix font fallback, thanks @NetroScript + - update civitai downloader to handler new metadata + - improve control error handling + - use default model variant if specified variant doesnt exist + - use diffusers lora load override for *lcm/tcd/turbo loras* + - exception handler around vram memory stats gather + - improve ZLUDA installer with `--use-zluda` cli param, thanks @lshqqytiger + +## Update for 2024-02-22 + +Only 3 weeks since last release, but here's another feature-packed one! +This time release schedule was shorter as we wanted to get some of the fixes out faster. + +### Highlights 2024-02-22 + +- **IP-Adapters** & **FaceID**: multi-adapter and multi-image suport +- New optimization engines: [DeepCache](https://github.com/horseee/DeepCache), [ZLUDA](https://github.com/vosen/ZLUDA) and **Dynamic Attention Slicing** +- New built-in pipelines: [Differential diffusion](https://github.com/exx8/differential-diffusion) and [Regional prompting](https://github.com/huggingface/diffusers/blob/main/examples/community/README.md#regional-prompting-pipeline) +- Big updates to: **Outpainting** (noised-edge-extend), **Clip-skip** (interpolate with non-integrer values!), **CFG end** (prevent overburn on high CFG scales), **Control** module masking functionality +- All reported issues since the last release are addressed and included in this release + +Further details: +- For basic instructions, see [README](https://github.com/vladmandic/automatic/blob/master/README.md) +- For more details on all new features see full [CHANGELOG](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) +- For documentation, see [WiKi](https://github.com/vladmandic/automatic/wiki) +- [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) server + +### Full ChangeLog for 2024-02-22 + +- **Improvements**: + - **IP Adapter** major refactor + - support for **multiple input images** per each ip adapter + - support for **multiple concurrent ip adapters** + *note*: you cannot mix & match ip adapters that use different *CLiP* models, for example `Base` and `Base ViT-G` + - add **adapter start/end** to settings, thanks @AI-Casanova + having adapter start late can help with better control over composition and prompt adherence + having adapter end early can help with overal quality and performance + - unified interface in txt2img, img2img and control + - enhanced xyz grid support + - **FaceID** now also works with multiple input images! + - [Differential diffusion](https://github.com/exx8/differential-diffusion) + img2img generation where you control strength of each pixel or image area + can be used with manually created masks or with auto-generated depth-maps + uses general denoising strength value + simply enable from *img2img -> scripts -> differential diffusion* + *note*: supports sd15 and sdxl models + - [Regional prompting](https://github.com/huggingface/diffusers/blob/main/examples/community/README.md#regional-prompting-pipeline) as a built-in solution + usage is same as original implementation from @hako-mikan + click on title to open docs and see examples of full syntax on how to use it + simply enable from *scripts -> regional prompting* + *note*: supports sd15 models only + - [DeepCache](https://github.com/horseee/DeepCache) model acceleration + it can produce massive speedups (2x-5x) with no overhead, but with some loss of quality + *settings -> compute -> model compile -> deep-cache* and *settings -> compute -> model compile -> cache interval* + - [ZLUDA](https://github.com/vosen/ZLUDA) experimental support, thanks @lshqqytiger + - ZLUDA is CUDA wrapper that can be used for GPUs without native support + - best use case is *AMD GPUs on Windows*, see [wiki](https://github.com/vladmandic/automatic/wiki/ZLUDA) for details + - **Outpaint** control outpaint now uses new alghorithm: noised-edge-extend + new method allows for much larger outpaint areas in a single pass, even outpaint 512->1024 works well + note that denoise strength should be increased for larger the outpaint areas, for example outpainting 512->1024 works well with denoise 0.75 + outpaint can run in *img2img* mode (default) and *inpaint* mode where original image is masked (if inpaint masked only is selected) + - **Clip-skip** reworked completely, thanks @AI-Casanova & @Disty0 + now clip-skip range is 0-12 where previously lowest value was 1 (default is still 1) + values can also be decimal to interpolate between different layers, for example `clip-skip: 1.5`, thanks @AI-Casanova + - **CFG End** new param to control image generation guidance, thanks @AI-Casanova + sometimes you want strong control over composition, but you want it to stop at some point + for example, when used with ip-adapters or controlnet, high cfg scale can overpower the guided image + - **Control** + - when performing inpainting, you can specify processing resolution using **size->mask** + - units now have extra option to re-use current preview image as processor input + - **Cross-attention** refactored cross-attention methods, thanks @Disty0 + - for backend:original, its unchanged: SDP, xFormers, Doggettxs, InvokeAI, Sub-quadratic, Split attention + - for backend:diffuers, list is now: SDP, xFormers, Batch matrix-matrix, Split attention, Dynamic Attention BMM, Dynamic Attention SDP + note: you may need to update your settings! Attention Slicing is renamed to Split attention + - for ROCm, updated default cross-attention to Scaled Dot Product + - **Dynamic Attention Slicing**, thanks @Disty0 + - dynamically slices attention queries in order to keep them under the slice rate + slicing gets only triggered if the query size is larger than the slice rate to gain performance + *Dynamic Attention Slicing BMM* uses *Batch matrix-matrix* + *Dynamic Attention Slicing SDP* uses *Scaled Dot Product* + - *settings -> compute settings -> attention -> dynamic attention slicing* + - **ONNX**: + - allow specify onnx default provider and cpu fallback + *settings -> diffusers* + - allow manual install of specific onnx flavor + *settings -> onnx* + - better handling of `fp16` models/vae, thanks @lshqqytiger + - **OpenVINO** update to `torch 2.2.0`, thanks @Disty0 + - **HyperTile** additional options thanks @Disty0 + - add swap size option + - add use only for hires pass option + - add `--theme` cli param to force theme on startup + - add `--allow-paths` cli param to add additional paths that are allowed to be accessed via web, thanks @OuticNZ +- **Wiki**: + - added benchmark notes for IPEX, OpenVINO and Olive + - added ZLUDA wiki page +- **Internal** + - update dependencies + - refactor txt2img/img2img api + - enhanced theme loader + - add additional debug env variables + - enhanced sdp cross-optimization control + see *settings -> compute settings* + - experimental support for *python 3.12* +- **Fixes**: + - add variation seed to diffusers txt2img, thanks @AI-Casanova + - add cmd param `--skip-env` to skip setting of environment parameters during sdnext load + - handle extensions that install conflicting versions of packages + `onnxruntime`, `opencv2-python` + - installer refresh package cache on any install + - fix embeddings registration on server startup, thanks @AI-Casanova + - ipex handle dependencies, thanks @Disty0 + - insightface handle dependencies + - img2img mask blur and padding + - xyz grid handle ip adapter name and scale + - lazy loading of image may prevent metadata from being loaded on time + - allow startup without valid models folder + - fix interrogate api endpoint + - control fix resize causing runtime errors + - control fix processor override image after processor change + - control fix display grid with batch + - control restore pipeline before running scripts/extensions + - handle pipelines that return dict instead of object + - lora use strict name matching if preferred option is by-filename + - fix inpaint mask only for diffusers + - fix vae dtype mismatch, thanks @Disty0 + - fix controlnet inpaint mask + - fix theme list refresh + - fix extensions update information in ui + - fix taesd with bfloat16 + - fix model merge manual merge settings, thanks @AI-Casanova + - fix gradio instant update issues for textboxes in quicksettings + - fix rembg missing dependency + - bind controlnet extension to last known working commit, thanks @Aptronymist + - prompts-from-file fix resizable prompt area + +## Update for 2024-02-07 + +Another big release just hit the shelves! + +### Highlights 2024-02-07 + +- A lot more functionality in the **Control** module: + - Inpaint and outpaint support, flexible resizing options, optional hires + - Built-in support for many new processors and models, all auto-downloaded on first use + - Full support for scripts and extensions +- Complete **Face** module + implements all variations of **FaceID**, **FaceSwap** and latest **PhotoMaker** and **InstantID** +- Much enhanced **IPAdapter** modules +- Brand new **Intelligent masking**, manual or automatic + Using ML models (*LAMA* object removal, *REMBG* background removal, *SAM* segmentation, etc.) and with live previews + With granular blur, erode and dilate controls +- New models and pipelines: + **Segmind SegMoE**, **Mixture Tiling**, **InstaFlow**, **SAG**, **BlipDiffusion** +- Massive work integrating latest advances with [OpenVINO](https://github.com/vladmandic/automatic/wiki/OpenVINO), [IPEX](https://github.com/vladmandic/automatic/wiki/Intel-ARC) and [ONNX Olive](https://github.com/vladmandic/automatic/wiki/ONNX-Runtime-&-Olive) +- Full control over brightness, sharpness and color shifts and color grading during generate process directly in latent space +- **Documentation**! This was a big one, with a lot of new content and updates in the [WiKi](https://github.com/vladmandic/automatic/wiki) + +Plus welcome additions to **UI performance, usability and accessibility** and flexibility of deployment as well as **API** improvements +And it also includes fixes for all reported issues so far + +As of this release, default backend is set to **diffusers** as its more feature rich than **original** and supports many additional models (original backend does remain as fully supported) + +Also, previous versions of **SD.Next** were tuned for balance between performance and resource usage. +With this release, focus is more on performance. +See [Benchmark](https://github.com/vladmandic/automatic/wiki/Benchmark) notes for details, but as a highlight, we are now hitting **~110-150 it/s** on a standard nVidia RTX4090 in optimal scenarios! + +Further details: +- For basic instructions, see [README](https://github.com/vladmandic/automatic/blob/master/README.md) +- For more details on all new features see full [CHANGELOG](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) +- For documentation, see [WiKi](https://github.com/vladmandic/automatic/wiki) + +### Full ChangeLog 2024-02-07 + +- Heavily updated [Wiki](https://github.com/vladmandic/automatic/wiki) +- **Control**: + - new docs: + - [Control overview](https://github.com/vladmandic/automatic/wiki/Control) + - [Control guide](https://github.com/vladmandic/automatic/wiki/Control-Guide), thanks @Aptronymist + - add **inpaint** support + applies to both *img2img* and *controlnet* workflows + - add **outpaint** support + applies to both *img2img* and *controlnet* workflows + *note*: increase denoising strength since outpainted area is blank by default + - new **mask** module + - granular blur (gaussian), erode (reduce or remove noise) and dilate (pad or expand) + - optional **live preview** + - optional **auto-segmentation** using ml models + auto-segmentation can be done using **segment-anything** models or **rembg** models + *note*: auto segmentation will automatically expand user-masked area to segments that include current user mask + - optional **auto-mask** + if you dont provide mask or mask is empty, you can instead use auto-mask to automatically generate mask + this is especially useful if you want to use advanced masking on batch or video inputs and dont want to manually mask each image + *note*: such auto-created mask is also subject to all other selected settings such as auto-segmentation, blur, erode and dilate + - optional **object removal** using LaMA model + remove selected objects from images with a single click + works best when combined with auto-segmentation to remove smaller objects + - masking can be combined with control processors in which case mask is applied before processor + - unmasked part of can is optionally applied to final image as overlay, see settings `mask_apply_overlay` + - support for many additional controlnet models + now built-in models include 30+ SD15 models and 15+ SDXL models + - allow **resize** both *before* and *after* generate operation + this allows for workflows such as: *image -> upscale or downscale -> generate -> upscale or downscale -> output* + providing more flexibility and than standard hires workflow + *note*: resizing before generate can be done using standard upscalers or latent + - implicit **hires** + since hires is only used for txt2img, control reuses existing resize functionality + any image size is used as txt2img target size + but if resize scale is also set its used to additionally upscale image after initial txt2img and for hires pass + - add support for **scripts** and **extensions** + you can now combine control workflow with your favorite script or extension + *note* extensions that are hard-coded for txt2img or img2img tabs may not work until they are updated + - add **depth-anything** depth map processor and trained controlnet + - add **marigold** depth map processor + this is state-of-the-art depth estimation model, but its quite heavy on resources + - add **openpose xl** controlnet + - add blip/booru **interrogate** functionality to both input and output images + - configurable output folder in settings + - auto-refresh available models on tab activate + - add image preview for override images set per-unit + - more compact unit layout + - reduce usage of temp files + - add context menu to action buttons + - move ip-adapter implementation to control tabs + - resize by now applies to input image or frame individually + allows for processing where input images are of different sizes + - support controlnets with non-default yaml config files + - implement resize modes for override images + - allow any selection of units + - dynamically install depenencies required by specific processors + - fix input image size + - fix video color mode + - fix correct image mode + - fix batch/folder/video modes + - fix processor switching within same unit + - fix pipeline switching between different modes +- **Face** module + implements all variations of **FaceID**, **FaceSwap** and latest **PhotoMaker** and **InstantID** + simply select from scripts and choose your favorite method and model + *note*: all models are auto-downloaded on first use + - [FaceID](https://huggingface.co/h94/IP-Adapter-FaceID) + - faceid guides image generation given the input image + - full implementation for *SD15* and *SD-XL*, to use simply select from *Scripts* + **Base** (93MB) uses *InsightFace* to generate face embeds and *OpenCLIP-ViT-H-14* (2.5GB) as image encoder + **Plus** (150MB) uses *InsightFace* to generate face embeds and *CLIP-ViT-H-14-laion2B* (3.8GB) as image encoder + **SDXL** (1022MB) uses *InsightFace* to generate face embeds and *OpenCLIP-ViT-bigG-14* (3.7GB) as image encoder + - [FaceSwap](https://github.com/deepinsight/insightface/blob/master/examples/in_swapper/README.md) + - face swap performs face swapping at the end of generation + - based on InsightFace in-swapper + - [PhotoMaker](https://github.com/TencentARC/PhotoMaker) + - for *SD-XL* only + - new model from TenencentARC using similar concept as IPAdapter, but with different implementation and + allowing full concept swaps between input images and generated images using trigger words + - note: trigger word must match exactly one term in prompt for model to work + - [InstantID](https://github.com/InstantID/InstantID) + - for *SD-XL* only + - based on custom trained ip-adapter and controlnet combined concepts + - note: controlnet appears to be heavily watermarked + - enable use via api, thanks @trojaner +- [IPAdapter](https://huggingface.co/h94/IP-Adapter) + - additional models for *SD15* and *SD-XL*, to use simply select from *Scripts*: + **SD15**: Base, Base ViT-G, Light, Plus, Plus Face, Full Face + **SDXL**: Base SDXL, Base ViT-H SDXL, Plus ViT-H SDXL, Plus Face ViT-H SDXL + - enable use via api, thanks @trojaner +- [Segmind SegMoE](https://github.com/segmind/segmoe) + - initial support for reference models + download&load via network -> models -> reference -> **SegMoE SD 4x2** (3.7GB), **SegMoE XL 2x1** (10GB), **SegMoE XL 4x2** + - note: since segmoe is basically sequential mix of unets from multiple models, it can get large + SD 4x2 is ~4GB, XL 2x1 is ~10GB and XL 4x2 is 18GB + - supports lora, thanks @AI-Casanova + - support for create and load custom mixes will be added in the future +- [Mixture Tiling](https://arxiv.org/abs/2302.02412) + - uses multiple prompts to guide different parts of the grid during diffusion process + - can be used ot create complex scenes with multiple subjects + - simply select from scripts +- [Self-attention guidance](https://github.com/SusungHong/Self-Attention-Guidance) + - simply select scale in advanced menu + - can drastically improve image coherence as well as reduce artifacts + - note: only compatible with some schedulers +- [FreeInit](https://tianxingwu.github.io/pages/FreeInit/) for **AnimateDiff** + - greatly improves temporal consistency of generated outputs + - all options are available in animateddiff script +- [SalesForce BlipDiffusion](https://huggingface.co/docs/diffusers/api/pipelines/blip_diffusion) + - model can be used to place subject in a different context + - requires input image + - last word in prompt and negative prompt will be used as source and target subjects + - sampler must be set to default before loading the model +- [InstaFlow](https://github.com/gnobitab/InstaFlow) + - another take on super-fast image generation in a single step + - set *sampler:default, steps:1, cfg-scale:0* + - load from networks -> models -> reference +- **Improvements** + - **ui** + - check version and **update** SD.Next via UI + simply go to: settings -> update + - globally configurable **font size** + will dynamically rescale ui depending on settings -> user interface + - built-in **themes** can be changed on-the-fly + this does not work with gradio-default themes as css is created by gradio itself + - two new **themes**: *simple-dark* and *simple-light* + - modularized blip/booru interrogate + now appears as toolbuttons on image/gallery output + - faster browser page load + - update hints, thanks @brknsoul + - cleanup settings + - **server** + - all move/offload options are disable by default for optimal performance + enable manually if low on vram + - **server startup**: performance + - reduced module imports + ldm support is now only loaded when running in backend=original + - faster extension load + - faster json parsing + - faster lora indexing + - lazy load optional imports + - batch embedding load, thanks @midcoastal and @AI-Casanova + 10x+ faster embeddings load for large number of embeddings, now works for 1000+ embeddings + - file and folder list caching, thanks @midcoastal + if you have a lot of files and and/or are using slower or non-local storage, this speeds up file access a lot + - add `SD_INSTALL_DEBUG` env variable to trace all `git` and `pip` operations + - **extra networks** + - 4x faster civitai metadata and previews lookup + - better display and selection of tags & trigger words + if hashes are calculated, trigger words will only be displayed for actual model version + - better matching of previews + - better search, including searching for multiple keywords or using full regex + see wiki page for more details on syntax + thanks @NetroScript + - reduce html overhead + - **model compression**, thanks @Disty0 + - using built-in NNCF model compression, you can reduce the size of your models significantly + example: up to 3.4GB of VRAM saved for SD-XL model! + - see [wiki](https://github.com/vladmandic/automatic/wiki/Model-Compression-with-NNCF) for details + - **embeddings** + you can now use sd 1.5 embeddings with your sd-xl models!, thanks @AI-Casanova + conversion is done on-the-fly, is completely transparent and result is an approximation of embedding + to enable: settings->extra networks->auto-convert embeddings + - **offline deployment**: allow deployment without git clone + for example, you can now deploy a zip of the sdnext folder + - **latent upscale**: updated latent upscalers (some are new) + *nearest, nearest-exact, area, bilinear, bicubic, bilinear-antialias, bicubic-antialias* + - **scheduler**: added `SA Solver` + - **model load to gpu** + new option in settings->diffusers allowing models to be loaded directly to GPU while keeping RAM free + this option is not compatible with any kind of model offloading as model is expected to stay in GPU + additionally, all model-moves can now be traced with env variable `SD_MOVE_DEBUG` + - **xyz grid** + - range control + example: `5.0-6.0:3` will generate 3 images with values `5.0,5.5,6.0` + example: `10-20:4` will generate 4 images with values `10,13,16,20` + - continue on error + now you can use xyz grid with different params and test which ones work and which dont + - correct font scaling, thanks @nCoderGit + - **hypertile** + - enable vae tiling + - add autodetect optimial value + set tile size to 0 to use autodetected value + - **cli** + - `sdapi.py` allow manual api invoke + example: `python cli/sdapi.py /sdapi/v1/sd-models` + - `image-exif.py` improve metadata parsing + - `install-sf` helper script to automatically find best available stable-fast package for the platform + - **memory**: add ram usage monitoring in addition to gpu memory usage monitoring + - **vae**: enable taesd batch decode + enable/disable with settings -> diffusers > vae slicing +- **compile** + - new option: **fused projections** + pretty much free 5% performance boost for compatible models + enable in settings -> compute settings + - new option: **dynamic quantization** (experimental) + reduces memory usage and increases performance + enable in settings -> compute settings + best used together with torch compile: *inductor* + this feature is highly experimental and will evolve over time + requires nightly versions of `torch` and `torchao` + > `pip install -U --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu121` + > `pip install -U git+https://github.com/pytorch-labs/ao` + - new option: **compile text encoder** (experimental) +- **correction** + - new section in generate, allows for image corrections during generataion directly in latent space + - adds *brightness*, *sharpness* and *color* controls, thanks @AI-Casanova + - adds *color grading* controls, thanks @AI-Casanova + - replaces old **hdr** section +- **IPEX**, thanks @disty0 + - see [wiki](https://github.com/vladmandic/automatic/wiki/Intel-ARC) for details + - rewrite ipex hijacks without CondFunc + improves compatibilty and performance + fixes random memory leaks + - out of the box support for Intel Data Center GPU Max Series + - remove IPEX / Torch 2.0 specific hijacks + - add `IPEX_SDPA_SLICE_TRIGGER_RATE`, `IPEX_ATTENTION_SLICE_RATE` and `IPEX_FORCE_ATTENTION_SLICE` env variables + - disable 1024x1024 workaround if the GPU supports 64 bit + - fix lock-ups at very high resolutions +- **OpenVINO**, thanks @disty0 + - see [wiki](https://github.com/vladmandic/automatic/wiki/OpenVINO) for details + - **quantization support with NNCF** + run 8 bit directly without autocast + enable *OpenVINO Quantize Models with NNCF* from *Compute Settings* + - **4-bit support with NNCF** + enable *Compress Model weights with NNCF* from *Compute Settings* and set a 4-bit NNCF mode + select both CPU and GPU from the device selection if you want to use 4-bit or 8-bit modes on GPU + - experimental support for *Text Encoder* compiling + OpenVINO is faster than IPEX now + - update to OpenVINO 2023.3.0 + - add device selection to `Compute Settings` + selecting multiple devices will use `HETERO` device + - remove `OPENVINO_TORCH_BACKEND_DEVICE` env variable + - reduce system memory usage after compile + - fix cache loading with multiple models +- **Olive** support, thanks @lshqqytiger + - fully merged in in [wiki](https://github.com/vladmandic/automatic/wiki/ONNX-Runtime-&-Olive), see wiki for details + - as a highlight, 4-5 it/s using DirectML on AMD GPU translates to 23-25 it/s using ONNX/Olive! +- **fixes** + - civitai model download: enable downloads of embeddings + - ipadapter: allow changing of model/image on-the-fly + - ipadapter: fix fallback of cross-attention on unload + - rebasin iterations, thanks @AI-Casanova + - prompt scheduler, thanks @AI-Casanova + - python: fix python 3.9 compatibility + - sdxl: fix positive prompt embeds + - img2img: clip and blip interrogate + - img2img: sampler selection offset + - img2img: support variable aspect ratio without explicit resize + - cli: add `simple-upscale.py` script + - cli: fix cmd args parsing + - cli: add `run-benchmark.py` script + - api: add `/sdapi/v1/version` endpoint + - api: add `/sdapi/v1/platform` endpoint + - api: return current image in progress api if requested + - api: sanitize response object + - api: cleanup error logging + - api: fix api-only errors + - api: fix image to base64 + - api: fix upscale + - refiner: fix use of sd15 model as refiners in second pass + - refiner: enable none as option in xyz grid + - sampler: add sampler options info to metadata + - sampler: guard against invalid sampler index + - sampler: add img2img_extra_noise option + - config: reset default cfg scale to 6.0 + - hdr: fix math, thanks @AI-Casanova + - processing: correct display metadata + - processing: fix batch file names + - live preview: fix when using `bfloat16` + - live preview: add thread locking + - upscale: fix ldsr + - huggingface: handle fallback model variant on load + - reference: fix links to models and use safetensors where possible + - model merge: unbalanced models where not all keys are present, thanks @AI-Casanova + - better sdxl model detection + - global crlf->lf switch + - model type switch if there is loaded submodels + - cleanup samplers use of compute devices, thanks @Disty0 +- **other** + - extensions `sd-webui-controlnet` is locked to commit `ecd33eb` due to breaking changes + - extension `stable-diffusion-webui-images-browser` is locked to commit `27fe4a7` due to breaking changes + - updated core requirements + - fully dynamic pipelines + pipeline switch is now done on-the-fly and does not require manual initialization of individual components + this allows for quick implementation of new pipelines + see `modules/sd_models.py:switch_pipe` for details + - major internal ui module refactoring + this may cause compatibility issues if an extension is doing a direct import from `ui.py` + in which case, report it so we can add a compatibility layer + - major public api refactoring + this may cause compatibility issues if an extension is doing a direct import from `api.py` or `models.py` + in which case, report it so we can add a compatibility layer + +## Update for 2023-12-29 + +To wrap up this amazing year, were releasing a new version of [SD.Next](https://github.com/vladmandic/automatic), this one is absolutely massive! + +### Highlights 2023-12-29 + +- Brand new Control module for *text, image, batch and video* processing + Native implementation of all control methods for both *SD15* and *SD-XL* + ▹ **ControlNet | ControlNet XS | Control LLLite | T2I Adapters | IP Adapters** + For details, see [Wiki](https://github.com/vladmandic/automatic/wiki/Control) documentation: +- Support for new models types out-of-the-box + This brings number of supported t2i/i2i model families to 13! + ▹ **Stable Diffusion 1.5/2.1 | SD-XL | LCM | Segmind | Kandinsky | Pixart-α | Würstchen | aMUSEd | DeepFloyd IF | UniDiffusion | SD-Distilled | BLiP Diffusion | etc.** +- New video capabilities: + ▹ **AnimateDiff | SVD | ModelScope | ZeroScope** +- Enhanced platform support + ▹ **Windows | Linux | MacOS** with **nVidia | AMD | IntelArc | DirectML | OpenVINO | ONNX+Olive** backends +- Better onboarding experience (first install) + with all model types available for single click download & load (networks -> reference) +- Performance optimizations! + For comparisment of different processing options and compile backends, see [Wiki](https://github.com/vladmandic/automatic/wiki/Benchmark) + As a highlight, were reaching **~100 it/s** (no tricks, this is with full features enabled and end-to-end on a standard nVidia RTX4090) +- New [custom pipelines](https://github.com/vladmandic/automatic/blob/dev/scripts/example.py) framework for quickly porting any new pipeline + +And others improvements in areas such as: Upscaling (up to 8x now with 40+ available upscalers), Inpainting (better quality), Prompt scheduling, new Sampler options, new LoRA types, additional UI themes, better HDR processing, built-in Video interpolation, parallel Batch processing, etc. + +Plus some nifty new modules such as **FaceID** automatic face guidance using embeds during generation and **Depth 3D** image to 3D scene + +### Full ChangeLog 2023-12-29 + +- **Control** + - native implementation of all image control methods: + **ControlNet**, **ControlNet XS**, **Control LLLite**, **T2I Adapters** and **IP Adapters** + - top-level **Control** next to **Text** and **Image** generate + - supports all variations of **SD15** and **SD-XL** models + - supports *Text*, *Image*, *Batch* and *Video* processing + - for details and list of supported models and workflows, see Wiki documentation: + +- **Diffusers** + - [Segmind Vega](https://huggingface.co/segmind/Segmind-Vega) model support + - small and fast version of **SDXL**, only 3.1GB in size! + - select from *networks -> reference* + - [aMUSEd 256](https://huggingface.co/amused/amused-256) and [aMUSEd 512](https://huggingface.co/amused/amused-512) model support + - lightweigt models that excel at fast image generation + - *note*: must select: settings -> diffusers -> generator device: unset + - select from *networks -> reference* + - [Playground v1](https://huggingface.co/playgroundai/playground-v1), [Playground v2 256](https://huggingface.co/playgroundai/playground-v2-256px-base), [Playground v2 512](https://huggingface.co/playgroundai/playground-v2-512px-base), [Playground v2 1024](https://huggingface.co/playgroundai/playground-v2-1024px-aesthetic) model support + - comparable to SD15 and SD-XL, trained from scratch for highly aesthetic images + - simply select from *networks -> reference* and use as usual + - [BLIP-Diffusion](https://dxli94.github.io/BLIP-Diffusion-website/) + - img2img model that can replace subjects in images using prompt keywords + - download and load by selecting from *networks -> reference -> blip diffusion* + - in image tab, select `blip diffusion` script + - [DemoFusion](https://github.com/PRIS-CV/DemoFusion) run your SDXL generations at any resolution! + - in **Text** tab select *script* -> *demofusion* + - *note*: GPU VRAM limits do not automatically go away so be careful when using it with large resolutions + in the future, expect more optimizations, especially related to offloading/slicing/tiling, + but at the moment this is pretty much experimental-only + - [AnimateDiff](https://github.com/guoyww/animatediff/) + - overall improved quality + - can now be used with *second pass* - enhance, upscale and hires your videos! + - [IP Adapter](https://github.com/tencent-ailab/IP-Adapter) + - add support for **ip-adapter-plus_sd15, ip-adapter-plus-face_sd15 and ip-adapter-full-face_sd15** + - can now be used in *xyz-grid* + - **Text-to-Video** + - in text tab, select `text-to-video` script + - supported models: **ModelScope v1.7b, ZeroScope v1, ZeroScope v1.1, ZeroScope v2, ZeroScope v2 Dark, Potat v1** + *if you know of any other t2v models youd like to see supported, let me know!* + - models are auto-downloaded on first use + - *note*: current base model will be unloaded to free up resources + - **Prompt scheduling** now implemented for Diffusers backend, thanks @AI-Casanova + - **Custom pipelines** contribute by adding your own custom pipelines! + - for details, see fully documented example: + + - **Schedulers** + - add timesteps range, changing it will make scheduler to be over-complete or under-complete + - add rescale betas with zero SNR option (applicable to Euler, Euler a and DDIM, allows for higher dynamic range) + - **Inpaint** + - improved quality when using mask blur and padding + - **UI** + - 3 new native UI themes: **orchid-dreams**, **emerald-paradise** and **timeless-beige**, thanks @illu_Zn + - more dynamic controls depending on the backend (original or diffusers) + controls that are not applicable in current mode are now hidden + - allow setting of resize method directly in image tab + (previously via settings -> upscaler_for_img2img) +- **Optional** + - **FaceID** face guidance during generation + - also based on IP adapters, but with additional face detection and external embeddings calculation + - calculates face embeds based on input image and uses it to guide generation + - simply select from *scripts -> faceid* + - *experimental module*: requirements must be installed manually: + > pip install insightface ip_adapter + - **Depth 3D** image to 3D scene + - delivered as an extension, install from extensions tab + + - creates fully compatible 3D scene from any image by using depth estimation + and creating a fully populated mesh + - scene can be freely viewed in 3D in the UI itself or downloaded for use in other applications + - [ONNX/Olive](https://github.com/vladmandic/automatic/wiki/ONNX-Olive) + - major work continues in olive branch, see wiki for details, thanks @lshqqytiger + as a highlight, 4-5 it/s using DirectML on AMD GPU translates to 23-25 it/s using ONNX/Olive! +- **General** + - new **onboarding** + - if no models are found during startup, app will no longer ask to download default checkpoint + instead, it will show message in UI with options to change model path or download any of the reference checkpoints + - *extra networks -> models -> reference* section is now enabled for both original and diffusers backend + - support for **Torch 2.1.2** (release) and **Torch 2.3** (dev) + - **Process** create videos from batch or folder processing + supports *GIF*, *PNG* and *MP4* with full interpolation, scene change detection, etc. + - **LoRA** + - add support for block weights, thanks @AI-Casanova + example `` + - add support for LyCORIS GLora networks + - add support for LoRA PEFT (*Diffusers*) networks + - add support for Lora-OFT (*Kohya*) and Lyco-OFT (*Kohaku*) networks + - reintroduce alternative loading method in settings: `lora_force_diffusers` + - add support for `lora_fuse_diffusers` if using alternative method + use if you have multiple complex loras that may be causing performance degradation + as it fuses lora with model during load instead of interpreting lora on-the-fly + - **CivitAI downloader** allow usage of access tokens for download of gated or private models + - **Extra networks** new *settting -> extra networks -> build info on first access* + indexes all networks on first access instead of server startup + - **IPEX**, thanks @disty0 + - update to **Torch 2.1** + if you get file not found errors, set `DISABLE_IPEXRUN=1` and run the webui with `--reinstall` + - built-in *MKL* and *DPCPP* for IPEX, no need to install OneAPI anymore + - **StableVideoDiffusion** is now supported with IPEX + - **8 bit support with NNCF** on Diffusers backend + - fix IPEX Optimize not applying with Diffusers backend + - disable 32bit workarounds if the GPU supports 64bit + - add `DISABLE_IPEXRUN` and `DISABLE_IPEX_1024_WA` environment variables + - performance and compatibility improvements + - **OpenVINO**, thanks @disty0 + - **8 bit support for CPUs** + - reduce System RAM usage + - update to Torch 2.1.2 + - add *Directory for OpenVINO cache* option to *System Paths* + - remove Intel ARC specific 1024x1024 workaround + - **HDR controls** + - batch-aware for enhancement of multiple images or video frames + - available in image tab + - **Logging** + - additional *TRACE* logging enabled via specific env variables + see for details + - improved profiling + use with `--debug --profile` + - log output file sizes + - **Other** + - **API** several minor but breaking changes to API behavior to better align response fields, thanks @Trojaner + - **Inpaint** add option `apply_overlay` to control if inpaint result should be applied as overlay or as-is + can remove artifacts and hard edges of inpaint area but also remove some details from original + - **chaiNNer** fix `NaN` issues due to autocast + - **Upscale** increase limit from 4x to 8x given the quality of some upscalers + - **Extra Networks** fix sort + - reduced default **CFG scale** from 6 to 4 to be more out-of-the-box compatibile with LCM/Turbo models + - disable google fonts check on server startup + - fix torchvision/basicsr compatibility + - fix styles quick save + - add hdr settings to metadata + - improve handling of long filenames and filenames during batch processing + - do not set preview samples when using via api + - avoid unnecessary resizes in img2img and inpaint + - safe handling of config updates avoid file corruption on I/O errors + - updated `cli/simple-txt2img.py` and `cli/simple-img2img.py` scripts + - save `params.txt` regardless of image save status + - update built-in log monitor in ui, thanks @midcoastal + - major CHANGELOG doc cleanup, thanks @JetVarimax + - major INSTALL doc cleanup, thanks JetVarimax + +## Update for 2023-12-04 + +Whats new? Native video in SD.Next via both **AnimateDiff** and **Stable-Video-Diffusion** - and including native MP4 encoding and smooth video outputs out-of-the-box, not just animated-GIFs. +Also new is support for **SDXL-Turbo** as well as new **Kandinsky 3** models and cool latent correction via **HDR controls** for any *txt2img* workflows, best-of-class **SDXL model merge** using full ReBasin methods and further mobile UI optimizations. + +- **Diffusers** + - **IP adapter** + - lightweight native implementation of T2I adapters which can guide generation towards specific image style + - supports most T2I models, not limited to SD 1.5 + - models are auto-downloaded on first use + - for IP adapter support in *Original* backend, use standard *ControlNet* extension + - **AnimateDiff** + - lightweight native implementation of AnimateDiff models: + *AnimateDiff 1.4, 1.5 v1, 1.5 v2, AnimateFace* + - supports SD 1.5 only + - models are auto-downloaded on first use + - for video saving support, see video support section + - can be combined with IP-Adapter for even better results! + - for AnimateDiff support in *Original* backend, use standard *AnimateDiff* extension + - **HDR latent control**, based on [article](https://huggingface.co/blog/TimothyAlexisVass/explaining-the-sdxl-latent-space#long-prompts-at-high-guidance-scales-becoming-possible) + - in *Advanced* params + - allows control of *latent clamping*, *color centering* and *range maximization* + - supported by *XYZ grid* + - [SD21 Turbo](https://huggingface.co/stabilityai/sd-turbo) and [SDXL Turbo]() support + - just set CFG scale (0.0-1.0) and steps (1-3) to a very low value + - compatible with original StabilityAI SDXL-Turbo or any of the newer merges + - download safetensors or select from networks -> reference + - [Stable Video Diffusion](https://huggingface.co/stabilityai/stable-video-diffusion-img2vid) and [Stable Video Diffusion XT](https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt) support + - download using built-in model downloader or simply select from *networks -> reference* + support for manually downloaded safetensors models will be added later + - for video saving support, see video support section + - go to *image* tab, enter input image and select *script* -> *stable video diffusion* + - [Kandinsky 3](https://huggingface.co/kandinsky-community/kandinsky-3) support + - download using built-in model downloader or simply select from *networks -> reference* + - this model is absolutely massive at 27.5GB at fp16, so be patient + - model params count is at 11.9B (compared to SD-XL at 3.3B) and its trained on mixed resolutions from 256px to 1024px + - use either model offload or sequential cpu offload to be able to use it + - better autodetection of *inpaint* and *instruct* pipelines + - support long seconary prompt for refiner +- **Video support** + - applies to any model that supports video generation, e.g. AnimateDiff and StableVideoDiffusion + - support for **animated-GIF**, **animated-PNG** and **MP4** + - GIF and PNG can be looped + - MP4 can have additional padding at the start/end as well as motion-aware interpolated frames for smooth playback + interpolation is done using [RIFE](https://arxiv.org/abs/2011.06294) with native implementation in SD.Next + And its fast - interpolation from 16 frames with 10x frames to target 160 frames results takes 2-3sec + - output folder for videos is in *settings -> image paths -> video* +- **General** + - redesigned built-in profiler + - now includes both `python` and `torch` and traces individual functions + - use with `--debug --profile` + - **model merge** add **SD-XL ReBasin** support, thanks @AI-Casanova + - further UI optimizations for **mobile devices**, thanks @iDeNoh + - log level defaults to info for console and debug for log file + - better prompt display in process tab + - increase maximum lora cache values + - fix extra networks sorting + - fix controlnet compatibility issues in original backend + - fix img2img/inpaint paste params + - fix save text file for manually saved images + - fix python 3.9 compatibility issues + +## Update for 2023-11-23 + +New release, primarily focused around three major new features: full **LCM** support, completely new **Model Merge** functionality and **Stable-fast** compile support +Also included are several other improvements and large number of hotfixes - see full changelog for details + +- **Diffusers** + - **LCM** support for any *SD 1.5* or *SD-XL* model! + - download [lcm-lora-sd15](https://huggingface.co/latent-consistency/lcm-lora-sdv1-5/tree/main) and/or [lcm-lora-sdxl](https://huggingface.co/latent-consistency/lcm-lora-sdxl/tree/main) + - load for favorite *SD 1.5* or *SD-XL* model *(original LCM was SD 1.5 only, this is both)* + - load **lcm lora** *(note: lcm lora is processed differently than any other lora)* + - set **sampler** to **LCM** + - set number of steps to some low number, for SD-XL 6-7 steps is normally sufficient + note: LCM scheduler does not support steps higher than 50 + - set CFG to between 1 and 2 + - Add `cli/lcm-convert.py` script to convert any SD 1.5 or SD-XL model to LCM model + by baking in LORA and uploading to Huggingface, thanks @Disty0 + - Support for [Stable Fast](https://github.com/chengzeyi/stable-fast) model compile on *Windows/Linux/WSL2* with *CUDA* + See [Wiki:Benchmark](https://github.com/vladmandic/automatic/wiki/Benchmark) for details and comparison + of different backends, precision modes, advanced settings and compile modes + *Hint*: **70+ it/s** is possible on *RTX4090* with no special tweaks + - Add additional pipeline types for manual model loads when loading from `safetensors` + - Updated logic for calculating **steps** when using base/hires/refiner workflows + - Improve **model offloading** for both model and sequential cpu offload when dealing with meta tensors + - Safe model offloading for non-standard models + - Fix **DPM SDE** scheduler + - Better support for SD 1.5 **inpainting** models + - Add support for **OpenAI Consistency decoder VAE** + - Enhance prompt parsing with long prompts and support for *BREAK* keyword + Change-in-behavior: new line in prompt now means *BREAK* + - Add alternative Lora loading algorithm, triggered if `SD_LORA_DIFFUSERS` is set +- **Models** + - **Model merge** + - completely redesigned, now based on best-of-class `meh` by @s1dlx + and heavily modified for additional functionality and fully integrated by @AI-Casanova (thanks!) + - merge SD or SD-XL models using *simple merge* (12 methods), + using one of *presets* (20 built-in presets) or custom block merge values + - merge with ReBasin permutations and/or clipping protection + - fully multithreaded for fastest merge possible + - **Model update** + - under UI -> Models - Update + - scan existing models for updated metadata on CivitAI and + provide download functionality for models with available +- **Extra networks** + - Use multi-threading for 5x load speedup + - Better Lora trigger words support + - Auto refresh styles on change +- **General** + - Many **mobile UI** optimizations, thanks @iDeNoh + - Support for **Torch 2.1.1** with CUDA 12.1 or CUDA 11.8 + - Configurable location for HF cache folder + Default is standard `~/.cache/huggingface/hub` + - Reworked parser when pasting previously generated images/prompts + includes all `txt2img`, `img2img` and `override` params + - Reworked **model compile** + - Support custom upscalers in subfolders + - Add additional image info when loading image in process tab + - Better file locking when sharing config and/or models between multiple instances + - Handle custom API endpoints when using auth + - Show logged in user in log when accessing via UI and/or API + - Support `--ckpt none` to skip loading a model +- **XYZ grid** + - Add refiner options to XYZ Grid + - Add option to create only subgrids in XYZ grid, thanks @midcoastal + - Allow custom font, background and text color in settings +- **Fixes** + - Fix `params.txt` saved before actual image + - Fix inpaint + - Fix manual grid image save + - Fix img2img init image save + - Fix upscale in txt2img for batch counts when no hires is used + - More uniform models paths + - Safe scripts callback execution + - Improved extension compatibility + - Improved BF16 support + - Match previews for reference models with downloaded models + +## Update for 2023-11-06 + +Another pretty big release, this time with focus on new models (3 new model types), new backends and optimizations +Plus quite a few fixes + +Also, [Wiki](https://github.com/vladmandic/automatic/wiki) has been updated with new content, so check it out! +Some highlights: [OpenVINO](https://github.com/vladmandic/automatic/wiki/OpenVINO), [IntelArc](https://github.com/vladmandic/automatic/wiki/Intel-ARC), [DirectML](https://github.com/vladmandic/automatic/wiki/DirectML), [ONNX/Olive](https://github.com/vladmandic/automatic/wiki/ONNX-Olive) + +- **Diffusers** + - since now **SD.Next** supports **12** different model types, weve added reference model for each type in + *Extra networks -> Reference* for easier select & auto-download + Models can still be downloaded manually, this is just a convenience feature & a showcase for supported models + - new model type: [Segmind SSD-1B](https://huggingface.co/segmind/SSD-1B) + its a *distilled* model trained at 1024px, this time 50% smaller and faster version of SD-XL! + (and quality does not suffer, its just more optimized) + test shows batch-size:4 with 1k images at full quality used less than 6.5GB of VRAM + and for further optimization, you can use built-in **TAESD** decoder, + which results in batch-size:16 with 1k images using 7.9GB of VRAM + select from extra networks -> reference or download using built-in **Huggingface** downloader: `segmind/SSD-1B` + - new model type: [Pixart-α XL 2](https://github.com/PixArt-alpha/PixArt-alpha) + in medium/512px and large/1024px variations + comparable in quality to SD 1.5 and SD-XL, but with better text encoder and highly optimized training pipeline + so finetunes can be done in as little as 10% compared to SD/SD-XL (note that due to much larger text encoder, it is a large model) + select from extra networks -> reference or download using built-in **Huggingface** downloader: `PixArt-alpha/PixArt-XL-2-1024-MS` + - new model type: [LCM: Latent Consistency Models](https://github.com/openai/consistency_models) + trained at 512px, but with near-instant generate in a as little as 3 steps! + combined with OpenVINO, generate on CPU takes less than 5-10 seconds: + and absolute beast when combined with **HyperTile** and **TAESD** decoder resulting in **28 FPS** + (on RTX4090 for batch 16x16 at 512px) + note: set sampler to **Default** before loading model as LCM comes with its own *LCMScheduler* sampler + select from extra networks -> reference or download using built-in **Huggingface** downloader: `SimianLuo/LCM_Dreamshaper_v7` + - support for **Custom pipelines**, thanks @disty0 + download using built-in **Huggingface** downloader + think of them as plugins for diffusers not unlike original extensions that modify behavior of `ldm` backend + list of community pipelines: + - new custom pipeline: `Disty0/zero123plus-pipeline`, thanks @disty0 + generate 4 output images with different camera positions: front, side, top, back! + for more details, see + - new backend: **ONNX/Olive** *(experimental)*, thanks @lshqqytiger + for details, see [WiKi](https://github.com/vladmandic/automatic/wiki/ONNX-Runtime) + - extend support for [Free-U](https://github.com/ChenyangSi/FreeU) + improve generations quality at no cost (other than finding params that work for you) +- **General** + - attempt to auto-fix invalid samples which occur due to math errors in lower precision + example: `RuntimeWarning: invalid value encountered in cast: sample = sample.astype(np.uint8)` + begone **black images** *(note: if it proves as working, this solution will need to be expanded to cover all scenarios)* + - add **Lora OFT** support, thanks @antis0007 and @ai-casanova + - **Upscalers** + - **compile** option, thanks @disty0 + - **chaiNNer** add high quality models from [Helaman](https://openmodeldb.info/users/helaman) + - redesigned **Progress bar** with full details on current operation + - new option: *settings -> images -> keep incomplete* + can be used to skip vae decode on aborted/skipped/interrupted image generations + - new option: *settings -> system paths -> models* + can be used to set custom base path for *all* models (previously only as cli option) + - remove external clone of items in `/repositories` + - **Interrogator** module has been removed from `extensions-builtin` + and fully implemented (and improved) natively +- **UI** + - UI tweaks for default themes + - UI switch core font in default theme to **noto-sans** + previously default font was simply *system-ui*, but it lead to too much variations between browsers and platforms + - UI tweaks for mobile devices, thanks @iDeNoh + - updated **Context menu** + right-click on any button in action menu (e.g. generate button) +- **Extra networks** + - sort by name, size, date, etc. + - switch between *gallery* and *list* views + - add tags from user metadata (in addition to tags in model metadata) for **lora** + - added **Reference** models for diffusers backend + - faster enumeration of all networks on server startup +- **Packages** + - updated `diffusers` to 0.22.0, `transformers` to 4.34.1 + - update **openvino**, thanks @disty0 + - update **directml**, @lshqqytiger +- **Compute** + - **OpenVINO**: + - updated to mainstream `torch` *2.1.0* + - support for **ESRGAN** upscalers +- **Fixes** + - fix **freeu** for backend original and add it to xyz grid + - fix loading diffuser models in huggingface format from non-standard location + - fix default styles looking in wrong location + - fix missing upscaler folder on initial startup + - fix handling of relative path for models + - fix simple live preview device mismatch + - fix batch img2img + - fix diffusers samplers: dpm++ 2m, dpm++ 1s, deis + - fix new style filename template + - fix image name template using model name + - fix image name sequence + - fix model path using relative path + - fix safari/webkit layour, thanks @eadnams22 + - fix `torch-rocm` and `tensorflow-rocm` version detection, thanks @xangelix + - fix **chainner** upscalers color clipping + - fix for base+refiner workflow in diffusers mode: number of steps, diffuser pipe mode + - fix for prompt encoder with refiner in diffusers mode + - fix prompts-from-file saving incorrect metadata + - fix add/remove extra networks to prompt + - fix before-hires step + - fix diffusers switch from invalid model + - force second requirements check on startup + - remove **lyco**, multiple_tqdm + - enhance extension compatibility for extensions directly importing codeformers + - enhance extension compatibility for extensions directly accessing processing params + - **css** fixes + - clearly mark external themes in ui + - update `typing-extensions` + +## Update for 2023-10-17 + +This is a major release, with many changes and new functionality... + +Changelog is massive, but do read through or youll be missing on some very cool new functionality +or even free speedups and quality improvements (regardless of which workflows youre using)! + +Note that for this release its recommended to perform a clean install (e.g. fresh `git clone`) +Upgrades are still possible and supported, but clean install is recommended for best experience + +- **UI** + - added **change log** to UI + see *System -> Changelog* + - converted submenus from checkboxes to accordion elements + any ui state including state of open/closed menus can be saved as default! + see *System -> User interface -> Set menu states* + - new built-in theme **invoked** + thanks @BinaryQuantumSoul + - add **compact view** option in settings -> user interface + - small visual indicator bottom right of page showing internal server job state +- **Extra networks**: + - **Details** + - new details interface to view and save data about extra networks + main ui now has a single button on each en to trigger details view + - details view includes model/lora metadata parser! + - details view includes civitai model metadata! + - **Metadata**: + - you can scan [civitai](https://civitai.com/) + for missing metadata and previews directly from extra networks + simply click on button in top-right corner of extra networks page + - **Styles** + - save/apply icons moved to extra networks + - can be edited in details view + - support for single or multiple styles per json + - support for embedded previews + - large database of art styles included by default + can be disabled in *settings -> extra networks -> show built-in* + - styles can also be used in a prompt directly: `` + if style if an exact match, it will be used + otherwise it will rotate between styles that match the start of the name + that way you can use different styles as wildcards when processing batches + - styles can have **extra** fields, not just prompt and negative prompt + for example: *"Extra: sampler: Euler a, width: 480, height: 640, steps: 30, cfg scale: 10, clip skip: 2"* + - **VAE** + - VAEs are now also listed as part of extra networks + - Image preview methods have been redesigned: simple, approximate, taesd, full + please set desired preview method in settings + - both original and diffusers backend now support "full quality" setting + if you desired model or platform does not support FP16 and/or you have a low-end hardware and cannot use FP32 + you can disable "full quality" in advanced params and it will likely reduce decode errors (infamous black images) + - **LoRA** + - LoRAs are now automatically filtered based on compatibility with currently loaded model + note that if lora type cannot be auto-determined, it will be left in the list + - **Refiner** + - you can load model from extra networks as base model or as refiner + simply select button in top-right of models page + - **General** + - faster search, ability to show/hide/sort networks + - refactored subfolder handling + *note*: this will trigger model hash recalculation on first model use +- **Diffusers**: + - better pipeline **auto-detect** when loading from safetensors + - **SDXL Inpaint** + - although any model can be used for inpainiting, there is a case to be made for + dedicated inpainting models as they are tuned to inpaint and not generate + - model can be used as base model for **img2img** or refiner model for **txt2img** + To download go to *Models -> Huggingface*: + - `diffusers/stable-diffusion-xl-1.0-inpainting-0.1` *(6.7GB)* + - **SDXL Instruct-Pix2Pix** + - model can be used as base model for **img2img** or refiner model for **txt2img** + this model is massive and requires a lot of resources! + to download go to *Models -> Huggingface*: + - `diffusers/sdxl-instructpix2pix-768` *(11.9GB)* + - **SD Latent Upscale** + - you can use *SD Latent Upscale* models as **refiner models** + this is a bit experimental, but it works quite well! + to download go to *Models -> Huggingface*: + - `stabilityai/sd-x2-latent-upscaler` *(2.2GB)* + - `stabilityai/stable-diffusion-x4-upscaler` *(1.7GB)* + - better **Prompt attention** + should better handle more complex prompts + for sdxl, choose which part of prompt goes to second text encoder - just add `TE2:` separator in the prompt + for hires and refiner, second pass prompt is used if present, otherwise primary prompt is used + new option in *settings -> diffusers -> sdxl pooled embeds* + thanks @AI-Casanova + - better **Hires** support for SD and SDXL + - better **TI embeddings** support for SD and SDXL + faster loading, wider compatibility and support for embeddings with multiple vectors + information about used embedding is now also added to image metadata + thanks @AI-Casanova + - better **Lora** handling + thanks @AI-Casanova + - better **SDXL preview** quality (approx method) + thanks @BlueAmulet + - new setting: *settings -> diffusers -> force inpaint* + as some models behave better when in *inpaint* mode even for normal *img2img* tasks +- **Upscalers**: + - pretty much a rewrite and tons of new upscalers - built-in list is now at **42** + - fix long outstanding memory leak in legacy code, amazing this went undetected for so long + - more high quality upscalers available by default + **SwinIR** (2), **ESRGAN** (12), **RealESRGAN** (6), **SCUNet** (2) + - if that is not enough, there is new **chaiNNer** integration: + adds 15 more upscalers from different families out-of-the-box: + **HAT** (6), **RealHAT** (2), **DAT** (1), **RRDBNet** (1), **SPSRNet** (1), **SRFormer** (2), **SwiftSR** (2) + and yes, you can download and add your own, just place them in `models/chaiNNer` + - two additional latent upscalers based on SD upscale models when using Diffusers backend + **SD Upscale 2x**, **SD Upscale 4x*** + note: Recommended usage for *SD Upscale* is by using second pass instead of upscaler + as it allows for tuning of prompt, seed, sampler settings which are used to guide upscaler + - upscalers are available in **xyz grid** + - simplified *settings->postprocessing->upscalers* + e.g. all upsamplers share same settings for tiling + - allow upscale-only as part of **txt2img** and **img2img** workflows + simply set *denoising strength* to 0 so hires does not get triggered + - unified init/download/execute/progress code + - easier installation +- **Samplers**: + - moved ui options to submenu + - default list for new installs is now all samplers, list can be modified in settings + - simplified samplers configuration in settings + plus added few new ones like sigma min/max which can highly impact sampler behavior + - note that list of samplers is now *different* since keeping a flat-list of all possible + combinations results in 50+ samplers which is not practical + items such as algorithm (e.g. karras) is actually a sampler option, not a sampler itself +- **CivitAI**: + - civitai model download is now multithreaded and resumable + meaning that you can download multiple models in parallel + as well as resume aborted/incomplete downloads + - civitai integration in *models -> civitai* can now find most + previews AND metadata for most models (checkpoints, loras, embeddings) + metadata is now parsed and saved in *[model].json* + typical hit rate is >95% for models, loras and embeddings + - description from parsed model metadata is used as model description if there is no manual + description file present in format of *[model].txt* + - to enable search for models, make sure all models have set hash values + *Models -> Valida -> Calculate hashes* +- **LoRA** + - new unified LoRA handler for all LoRA types (lora, lyco, loha, lokr, locon, ia3, etc.) + applies to both original and diffusers backend + thanks @AI-Casanova for diffusers port + - for *backend:original*, separate lyco handler has been removed +- **Compute** + - **CUDA**: + - default updated to `torch` *2.1.0* with cuda *12.1* + - testing moved to `torch` *2.2.0-dev/cu122* + - check out *generate context menu -> show nvml* for live gpu stats (memory, power, temp, clock, etc.) + - **Intel Arc/IPEX**: + - tons of optimizations, built-in binary wheels for Windows + i have to say, intel arc/ipex is getting to be quite a player, especially with openvino + thanks @Disty0 @Nuullll + - **AMD ROCm**: + - updated installer to support detect `ROCm` *5.4/5.5/5.6/5.7* + - support for `torch-rocm-5.7` + - **xFormers**: + - default updated to *0.0.23* + - note that latest xformers are still not compatible with cuda 12.1 + recommended to use torch 2.1.0 with cuda 11.8 + if you attempt to use xformers with cuda 12.1, it will force a full xformers rebuild on install + which can take a very long time and may/may-not work + - added cmd param `--use-xformers` to force usage of exformers + - **GC**: + - custom garbage collect threshold to reduce vram memory usage, thanks @Disty0 + see *settings -> compute -> gc* +- **Inference** + - new section in **settings** + - [HyperTile](https://github.com/tfernd/HyperTile): new! + available for *diffusers* and *original* backends + massive (up to 2x) speed-up your generations for free :) + *note: hypertile is not compatible with any extension that modifies processing parameters such as resolution* + thanks @tfernd + - [Free-U](https://github.com/ChenyangSi/FreeU): new! + available for *diffusers* and *original* backends + improve generations quality at no cost (other than finding params that work for you) + *note: temporarily disabled for diffusers pending release of diffusers==0.22* + thanks @ljleb + - [Token Merging](https://github.com/dbolya/tomesd): not new, but updated + available for *diffusers* and *original* backends + speed-up your generations by merging redundant tokens + speed up will depend on how aggressive you want to be with token merging + - **Batch mode** + new option *settings -> inference -> batch mode* + when using img2img process batch, optionally process multiple images in batch in parallel + thanks @Symbiomatrix +- **NSFW Detection/Censor** + - install extension: [NudeNet](https://github.com/vladmandic/sd-extension-nudenet) + body part detection, image metadata, advanced censoring, etc... + works for *text*, *image* and *process* workflows + more in the extension notes +- **Extensions** + - automatic discovery of new extensions on github + no more waiting for them to appear in index! + - new framework for extension validation + extensions ui now shows actual status of extensions for reviewed extensions + if you want to contribute/flag/update extension status, reach out on github or discord + - better overall compatibility with A1111 extensions (up to a point) + - [MultiDiffusion](https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111) + has been removed from list of built-in extensions + you can still install it manually if desired + - [LyCORIS] + has been removed from list of built-in extensions + it is considered obsolete given that all functionality is now built-in +- **General** + - **Startup** + - all main CLI parameters can now be set as environment variable as well + for example `--data-dir ` can be specified as `SD_DATADIR=` before starting SD.Next + - **XYZ Grid** + - more flexibility to use selection or strings + - **Logging** + - get browser session info in server log + - allow custom log file destination + see `webui --log` + - when running with `--debug` flag, log is force-rotated + so each `sdnext.log.*` represents exactly one server run + - internal server job state tracking + - **Launcher** + - new `webui.ps1` powershell launcher for windows (old `webui.bat` is still valid) + thanks @em411 + - **API** + - add end-to-end example how to use API: `cli/simple-txt2img.js` + covers txt2img, upscale, hires, refiner + - **train.py** + - wrapper script around built-in **kohyas lora** training script + see `cli/train.py --help` + new support for sd and sdxl, thanks @evshiron + new support for full offline mode (without sdnext server running) +- **Themes** + - all built-in themes are fully supported: + - *black-teal (default), light-teal, black-orange, invoked, amethyst-nightfall, midnight-barbie* + - if youre using any **gradio default** themes or a **3rd party** theme or that are not optimized for SD.Next, you may experience issues + default minimal style has been updated for compatibility, but actual styling is completely outside of SD.Next control + +## Update for 2023-09-13 + +Started as a mostly a service release with quite a few fixes, but then... +Major changes how **hires** works as well as support for a very interesting new model [Wuerstchen](https://huggingface.co/blog/wuertschen) + +- tons of fixes +- changes to **hires** + - enable non-latent upscale modes (standard upscalers) + - when using latent upscale, hires pass is run automatically + - when using non-latent upscalers, hires pass is skipped by default + enabled using **force hires** option in ui + hires was not designed to work with standard upscalers, but i understand this is a common workflow + - when using refiner, upscale/hires runs before refiner pass + - second pass can now also utilize full/quick vae quality + - note that when combining non-latent upscale, hires and refiner output quality is maximum, + but operations are really resource intensive as it includes: *base->decode->upscale->encode->hires->refine* + - all combinations of: decode full/quick + upscale none/latent/non-latent + hires on/off + refiner on/off + should be supported, but given the number of combinations, issues are possible + - all operations are captured in image metadata +- diffusers: + - allow loading of sd/sdxl models from safetensors without online connectivity + - support for new model: [wuerstchen](https://huggingface.co/warp-ai/wuerstchen) + its a high-resolution model (1024px+) thats ~40% faster than sd-xl with a bit lower resource requirements + go to *models -> huggingface -> search "warp-ai/wuerstchen" -> download* + its nearly 12gb in size, so be patient :) +- minor re-layout of the main ui +- updated **ui hints** +- updated **models -> civitai** + - search and download loras + - find previews for already downloaded models or loras +- new option **inference mode** + - default is standard `torch.no_grad` + new option is `torch.inference_only` which is slightly faster and uses less vram, but only works on some gpus +- new cmdline param `--no-metadata` + skips reading metadata from models that are not already cached +- updated **gradio** +- **styles** support for subfolders +- **css** optimizations +- clean-up **logging** + - capture system info in startup log + - better diagnostic output + - capture extension output + - capture ldm output + - cleaner server restart + - custom exception handling + +## Update for 2023-09-06 + +One week later, another large update! + +- system: + - full **python 3.11** support + note that changing python version does require reinstall + and if youre already on python 3.10, really no need to upgrade +- themes: + - new default theme: **black-teal** + - new light theme: **light-teal** + - new additional theme: **midnight-barbie**, thanks @nyxia +- extra networks: + - support for **tags** + show tags on hover, search by tag, list tags, add to prompt, etc. + - **styles** are now also listed as part of extra networks + existing `styles.csv` is converted upon startup to individual styles inside `models/style` + this is stage one of new styles functionality + old styles interface is still available, but will be removed in future + - cache file lists for much faster startup + speedups are 50+% for large number of extra networks + - ui refresh button now refreshes selected page, not all pages + - simplified handling of **descriptions** + now shows on-mouse-over without the need for user interaction + - **metadata** and **info** buttons only show if there is actual content +- diffusers: + - add full support for **textual inversions** (embeddings) + this applies to both sd15 and sdxl + thanks @ai-casanova for porting compel/sdxl code + - mix&match **base** and **refiner** models (*experimental*): + most of those are "because why not" and can result in corrupt images, but some are actually useful + also note that if youre not using actual refiner model, you need to bump refiner steps + as normal models are not designed to work with low step count + and if youre having issues, try setting prompt parser to "fixed attention" as majority of problems + are due to token mismatches when using prompt attention + - any sd15 + any sd15 + - any sd15 + sdxl-refiner + - any sdxl-base + sdxl-refiner + - any sdxl-base + any sd15 + - any sdxl-base + any sdxl-base + - ability to **interrupt** (stop/skip) model generate + - added **aesthetics score** setting (for sdxl) + used to automatically guide unet towards higher pleasing images + highly recommended for simple prompts + - added **force zeros** setting + create zero-tensor for prompt if prompt is empty (positive or negative) +- general: + - `rembg` remove backgrounds support for **is-net** model + - **settings** now show markers for all items set to non-default values + - **metadata** refactored how/what/when metadata is added to images + should result in much cleaner and more complete metadata + - pre-create all system folders on startup + - handle model load errors gracefully + - improved vram reporting in ui + - improved script profiling (when running in debug mode) + +## Update for 2023-08-30 + +Time for a quite a large update that has been leaking bit-by-bit over the past week or so... +*Note*: due to large changes, it is recommended to reset (delete) your `ui-config.json` + +- diffusers: + - support for **distilled** sd models + just go to models/huggingface and download a model, for example: + `segmind/tiny-sd`, `segmind/small-sd`, `segmind/portrait-finetuned` + those are lower quality, but extremely small and fast + up to 50% faster than sd 1.5 and execute in as little as 2.1gb of vram +- general: + - redesigned **settings** + - new layout with separated sections: + *settings, ui config, licenses, system info, benchmark, models* + - **system info** tab is now part of settings + when running outside of sdnext, system info is shown in main ui + - all system and image paths are now relative by default + - add settings validation when performing load/save + - settings tab in ui now shows settings that are changed from default values + - settings tab switch to compact view + - update **gradio** major version + this may result in some smaller layout changes since its a major version change + however, browser page load is now much faster + - optimizations: + - optimize model hashing + - add cli param `--skip-all` that skips all installer checks + use at personal discretion, but it can be useful for bulk deployments + - add model **precompile** option (when model compile is enabled) + - **extra network** folder info caching + results in much faster startup when you have large number of extra networks + - faster **xyz grid** switching + especially when using different checkpoints + - update **second pass** options for clarity + - models: + - civitai download missing model previews + - add **openvino** (experimental) cpu optimized model compile and inference + enable with `--use-openvino` + thanks @disty0 + - enable batch **img2img** scale-by workflows + now you can batch process with rescaling based on each individual original image size + - fixes: + - fix extra networks previews + - css fixes + - improved extensions compatibility (e.g. *sd-cn-animation*) + - allow changing **vae** on-the-fly for both original and diffusers backend + +## Update for 2023-08-20 + +Another release thats been baking in dev branch for a while... + +- general: + - caching of extra network information to enable much faster create/refresh operations + thanks @midcoastal +- diffusers: + - add **hires** support (*experimental*) + applies to all model types that support img2img, including **sd** and **sd-xl** + also supports all hires upscaler types as well as standard params like steps and denoising strength + when used with **sd-xl**, it can be used with or without refiner loaded + how to enable - there are no explicit checkboxes other than second pass itself: + - hires: upscaler is set and target resolution is not at default + - refiner: if refiner model is loaded + - images save options: *before hires*, *before refiner* + - redo `move model to cpu` logic in settings -> diffusers to be more reliable + note that system defaults have also changed, so you may need to tweak to your liking + - update dependencies + +## Update for 2023-08-17 + +Smaller update, but with some breaking changes (to prepare for future larger functionality)... + +- general: + - update all metadata saved with images + see for details + - improved **amd** installer with support for **navi 2x & 3x** and **rocm 5.4/5.5/5.6** + thanks @evshiron + - fix **img2img** resizing (applies to *original, diffusers, hires*) + - config change: main `config.json` no longer contains entire configuration + but only differences from defaults (similar to recent change performed to `ui-config.json`) +- diffusers: + - enable **batch img2img** workflows +- original: + - new samplers: **dpm++ 3M sde** (standard and karras variations) + enable in *settings -> samplers -> show samplers* + - expose always/never discard penultimate sigma + enable in *settings -> samplers* + +## Update for 2023-08-11 + +This is a big one thats been cooking in `dev` for a while now, but finally ready for release... + +- diffusers: + - **pipeline autodetect** + if pipeline is set to autodetect (default for new installs), app will try to autodetect pipeline based on selected model + this should reduce user errors such as loading **sd-xl** model when **sd** pipeline is selected + - **quick vae decode** as alternative to full vae decode which is very resource intensive + quick decode is based on `taesd` and produces lower quality, but its great for tests or grids as it runs much faster and uses far less vram + disabled by default, selectable in *txt2img/img2img -> advanced -> full quality* + - **prompt attention** for sd and sd-xl + supports both `full parser` and native `compel` + thanks @ai-casanova + - advanced **lora load/apply** methods + in addition to standard lora loading that was recently added to sd-xl using diffusers, now we have + - **sequential apply** (load & apply multiple loras in sequential manner) and + - **merge and apply** (load multiple loras and merge before applying to model) + see *settings -> diffusers -> lora methods* + thanks @hameerabbasi and @ai-casanova + - **sd-xl vae** from safetensors now applies correct config + result is that 3rd party vaes can be used without washed out colors + - options for optimized memory handling for lower memory usage + see *settings -> diffusers* +- general: + - new **civitai model search and download** + native support for civitai, integrated into ui as *models -> civitai* + - updated requirements + this time its a bigger change so upgrade may take longer to install new requirements + - improved **extra networks** performance with large number of networks + +## Update for 2023-08-05 + +Another minor update, but it unlocks some cool new items... + +- diffusers: + - vaesd live preview (sd and sd-xl) + - fix inpainting (sd and sd-xl) +- general: + - new torch 2.0 with ipex (intel arc) + - additional callbacks for extensions + enables latest comfyui extension + +## Update for 2023-07-30 + +Smaller release, but IMO worth a post... + +- diffusers: + - sd-xl loras are now supported! + - memory optimizations: Enhanced sequential CPU offloading, model CPU offload, FP16 VAE + - significant impact if running SD-XL (for example, but applies to any model) with only 8GB VRAM + - update packages +- minor bugfixes + +## Update for 2023-07-26 + +This is a big one, new models, new diffusers, new features and updated UI... + +First, **SD-XL 1.0** is released and yes, SD.Next supports it out of the box! + +- [SD-XL Base](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/sd_xl_base_1.0.safetensors) +- [SD-XL Refiner](https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/blob/main/sd_xl_refiner_1.0.safetensors) + +Also fresh is new **Kandinsky 2.2** model that does look quite nice: + +- [Kandinsky Decoder](https://huggingface.co/kandinsky-community/kandinsky-2-2-decoder) +- [Kandinsky Prior](https://huggingface.co/kandinsky-community/kandinsky-2-2-prior) + +Actual changelog is: + +- general: + - new loading screens and artwork + - major ui simplification for both txt2img and img2img + nothing is removed, but you can show/hide individual sections + default is very simple interface, but you can enable any sections and save it as default in settings + - themes: add additional built-in theme, `amethyst-nightfall` + - extra networks: add add/remove tags to prompt (e.g. lora activation keywords) + - extensions: fix couple of compatibility items + - firefox compatibility improvements + - minor image viewer improvements + - add backend and operation info to metadata + +- diffusers: + - were out of experimental phase and diffusers backend is considered stable + - sd-xl: support for **sd-xl 1.0** official model + - sd-xl: loading vae now applies to both base and refiner and saves a bit of vram + - sd-xl: denoising_start/denoising_end + - sd-xl: enable dual prompts + dual prompt is used if set regardless if refiner is enabled/loaded + if refiner is loaded & enabled, refiner prompt will also be used for refiner pass + - primary prompt goes to [OpenAI CLIP-ViT/L-14](https://huggingface.co/openai/clip-vit-large-patch14) + - refiner prompt goes to [OpenCLIP-ViT/bigG-14](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k) + - **kandinsky 2.2** support + note: kandinsky model must be downloaded using model downloader, not as safetensors due to specific model format + - refiner: fix batch processing + - vae: enable loading of pure-safetensors vae files without config + also enable *automatic* selection to work with diffusers + - sd-xl: initial lora support + right now this applies to official lora released by **stability-ai**, support for **kohyas** lora is expected soon + - implement img2img and inpainting (experimental) + actual support and quality depends on model + it works as expected for sd 1.5, but not so much for sd-xl for now + - implement limited stop/interrupt for diffusers + works between stages, not within steps + - add option to save image before refiner pass + - option to set vae upcast in settings + - enable fp16 vae decode when using optimized vae + this pretty much doubles performance of decode step (delay after generate is done) + +- original + - fix hires secondary sampler + this now fully obsoletes `fallback_sampler` and `force_hr_sampler_name` + + +## Update for 2023-07-18 + +While were waiting for official SD-XL release, heres another update with some fixes and enhancements... + +- **global** + - image save: option to add invisible image watermark to all your generated images + disabled by default, can be enabled in settings -> image options + watermark information will be shown when loading image such as in process image tab + also additional cli utility `/cli/image-watermark.py` to read/write/strip watermarks from images + - batch processing: fix metadata saving, also allow to drag&drop images for batch processing + - ui configuration: you can modify all ui default values from settings as usual, + but only values that are non-default will be written to `ui-config.json` + - startup: add cmd flag to skip all `torch` checks + - startup: force requirements check on each server start + there are too many misbehaving extensions that change system requirements + - internal: safe handling of all config file read/write operations + this allows sdnext to run in fully shared environments and prevents any possible configuration corruptions +- **diffusers**: + - sd-xl: remove image watermarks autocreated by 0.9 model + - vae: enable loading of external vae, documented in diffusers wiki + and mix&match continues, you can even use sd-xl vae with sd 1.5 models! + - samplers: add concept of *default* sampler to avoid needing to tweak settings for primary or second pass + note that sampler details will be printed in log when running in debug level + - samplers: allow overriding of sampler beta values in settings + - refiner: fix refiner applying only to first image in batch + - refiner: allow using direct latents or processed output in refiner + - model: basic support for one more model: [UniDiffuser](https://github.com/thu-ml/unidiffuser) + download using model downloader: `thu-ml/unidiffuser-v1` + and set resolution to 512x512 + +## Update for 2023-07-14 + +Trying to unify settings for both original and diffusers backend without introducing duplicates... + +- renamed **hires fix** to **second pass** + as that is what it actually is, name hires fix is misleading to start with +- actual **hires fix** and **refiner** are now options inside **second pass** section +- obsoleted settings -> sampler -> **force_hr_sampler_name** + it is now part of **second pass** options and it works the same for both original and diffusers backend + which means you can use different scheduler settings for txt2img and hires if you want +- sd-xl refiner will run if its loaded and if second pass is enabled + so you can quickly enable/disable refiner by simply enabling/disabling second pass +- you can mix&match **model** and **refiner** + for example, you can generate image using sd 1.5 and still use sd-xl refiner as second pass +- reorganized settings -> samplers to show which section refers to which backend +- added diffusers **lmsd** sampler + +## Update for 2023-07-13 + +Another big one, but now improvements to both **diffusers** and **original** backends as well plus ability to dynamically switch between them! + +- swich backend between diffusers and original on-the-fly + - you can still use `--backend ` and now that only means in which mode app will start, + but you can change it anytime in ui settings + - for example, you can even do things like generate image using sd-xl, + then switch to original backend and perform inpaint using a different model +- diffusers backend: + - separate ui settings for refiner pass with sd-xl + you can specify: prompt, negative prompt, steps, denoise start + - fix loading from pure safetensors files + now you can load sd-xl from safetensors file or from huggingface folder format + - fix kandinsky model (2.1 working, 2.2 was just released and will be soon) +- original backend: + - improvements to vae/unet handling as well as cross-optimization heads + in non-technical terms, this means lower memory usage and higher performance + and you should be able to generate higher resolution images without any other changes +- other: + - major refactoring of the javascript code + includes fixes for text selections and navigation + - system info tab now reports on nvidia driver version as well + - minor fixes in extra-networks + - installer handles origin changes for submodules + +big thanks to @huggingface team for great communication, support and fixing all the reported issues asap! + + +## Update for 2023-07-10 + +Service release with some fixes and enhancements: + +- diffusers: + - option to move base and/or refiner model to cpu to free up vram + - model downloader options to specify model variant / revision / mirror + - now you can download `fp16` variant directly for reduced memory footprint + - basic **img2img** workflow (*sketch* and *inpaint* are not supported yet) + note that **sd-xl** img2img workflows are architecturaly different so it will take longer to implement + - updated hints for settings +- extra networks: + - fix corrupt display on refesh when new extra network type found + - additional ui tweaks + - generate thumbnails from previews only if preview resolution is above 1k +- image viewer: + - fixes for non-chromium browsers and mobile users and add option to download image + - option to download image directly from image viewer +- general + - fix startup issue with incorrect config + - installer should always check requirements on upgrades + +## Update for 2023-07-08 + +This is a massive update which has been baking in a `dev` branch for a while now + +- merge experimental diffusers support + +*TL;DR*: Yes, you can run **SD-XL** model in **SD.Next** now +For details, see Wiki page: [Diffusers](https://github.com/vladmandic/automatic/wiki/Diffusers) +Note this is still experimental, so please follow Wiki +Additional enhancements and fixes will be provided over the next few days +*Thanks to @huggingface team for making this possible and our internal @team for all the early testing* + +Release also contains number of smaller updates: + +- add pan & zoom controls (touch and mouse) to image viewer (lightbox) +- cache extra networks between tabs + this should result in neat 2x speedup on building extra networks +- add settings -> extra networks -> do not automatically build extra network pages + speeds up app start if you have a lot of extra networks and you want to build them manually when needed +- extra network ui tweaks + +## Update for 2023-07-01 + +Small quality-of-life updates and bugfixes: + +- add option to disallow usage of ckpt checkpoints +- change lora and lyco dir without server restart +- additional filename template fields: `uuid`, `seq`, `image_hash` +- image toolbar is now shown only when image is present +- image `Zip` button gone and its not optional setting that applies to standard `Save` button +- folder `Show` button is present only when working on localhost, + otherwise its replaced with `Copy` that places image URLs on clipboard so they can be used in other apps + +## Update for 2023-06-30 + +A bit bigger update this time, but contained to specific areas... + +- change in behavior + extensions no longer auto-update on startup + using `--upgrade` flag upgrades core app as well as all submodules and extensions +- **live server log monitoring** in ui + configurable via settings -> live preview +- new **extra networks interface** + *note: if youre using a 3rd party ui extension for extra networks, it will likely need to be updated to work with new interface* + - display in front of main ui, inline with main ui or as a sidebar + - lazy load thumbnails + drastically reduces load times for large number of extra networks + - auto-create thumbnails from preview images in extra networks in a background thread + significant load time saving on subsequent restarts + - support for info files in addition to description files + - support for variable aspect-ratio thumbnails + - new folder view +- **extensions sort** by trending +- add requirements check for training + +## Update for 2023-06-26 + +- new training tab interface + - redesigned preprocess, train embedding, train hypernetwork +- new models tab interface + - new model convert functionality, thanks @akegarasu + - new model verify functionality +- lot of ipex specific fixes/optimizations, thanks @disty0 + +## Update for 2023-06-20 + +This one is less relevant for standard users, but pretty major if youre running an actual server +But even if not, it still includes bunch of cumulative fixes since last release - and going by number of new issues, this is probably the most stable release so far... +(next one is not going to be as stable, but it will be fun :) ) + +- minor improvements to extra networks ui +- more hints/tooltips integrated into ui +- new dedicated api server + - but highly promising for high throughput server +- improve server logging and monitoring with + - server log file rotation + - ring buffer with api endpoint `/sdapi/v1/log` + - real-time status and load endpoint `/sdapi/v1/system-info/status` + +## Update for 2023-06-14 + +Second stage of a jumbo merge from upstream plus few minor changes... + +- simplify token merging +- reorganize some settings +- all updates from upstream: **A1111** v1.3.2 [df004be] *(latest release)* + pretty much nothing major that i havent released in previous versions, but its still a long list of tiny changes + - skipped/did-not-port: + add separate hires prompt: unnecessarily complicated and spread over large number of commits due to many regressions + allow external scripts to add cross-optimization methods: dangerous and i dont see a use case for it so far + load extension info in threads: unnecessary as other optimizations ive already put place perform equally good + - broken/reverted: + sub-quadratic optimization changes + +## Update for 2023-06-13 + +Just a day later and one *bigger update*... +Both some **new functionality** as well as **massive merges** from upstream + +- new cache for models/lora/lyco metadata: `metadata.json` + drastically reduces disk access on app startup +- allow saving/resetting of **ui default values** + settings -> ui defaults +- ability to run server without loaded model + default is to auto-load model on startup, can be changed in settings -> stable diffusion + if disabled, model will be loaded on first request, e.g. when you click generate + useful when you want to start server to perform other tasks like upscaling which do not rely on model +- updated `accelerate` and `xformers` +- huge nubmer of changes ported from **A1111** upstream + this was a massive merge, hopefully this does not cause any regressions + and still a bit more pending... + +## Update for 2023-06-12 + +- updated ui labels and hints to improve clarity and provide some extra info + this is 1st stage of the process, more to come... + if you want to join the effort, see +- new localization and hints engine + how hints are displayed can be selected in settings -> ui +- reworked **installer** sequence + as some extensions are loading packages directly from their preload sequence + which was preventing some optimizations to take effect +- updated **settings** tab functionality, thanks @gegell + with real-time monitor for all new and/or updated settings +- **launcher** will now warn if application owned files are modified + you are free to add any user files, but do not modify app files unless youre sure in what youre doing +- add more profiling for scripts/extensions so you can see what takes time + this applies both to initial load as well as execution +- experimental `sd_model_dict` setting which allows you to load model dictionary + from one model and apply weights from another model specified in `sd_model_checkpoint` + results? who am i to judge :) + + +## Update for 2023-06-05 + +Few new features and extra handling for broken extensions +that caused my phone to go crazy with notifications over the weekend... + +- added extra networks to **xyz grid** options + now you can have more fun with all your embeddings and loras :) +- new **vae decode** method to help with larger batch sizes, thanks @bigdog +- new setting -> lora -> **use lycoris to handle all lora types** + this is still experimental, but the goal is to obsolete old built-in lora module + as it doesnt understand many new loras and built-in lyco module can handle it all +- somewhat optimize browser page loading + still slower than id want, but gradio is pretty bad at this +- profiling of scripts/extensions callbacks + you can now see how much or pre/post processing is done, not just how long generate takes +- additional exception handling so bad exception does not crash main app +- additional background removal models +- some work on bfloat16 which nobody really should be using, but why not 🙂 + + +## Update for 2023-06-02 + +Some quality-of-life improvements while working on larger stuff in the background... + +- redesign action box to be uniform across all themes +- add **pause** option next to stop/skip +- redesigned progress bar +- add new built-in extension: **agent-scheduler** + very elegant way to getting full queueing capabilities, thank @artventurdev +- enable more image formats + note: not all are understood by browser so previews and images may appear as blank + unless you have some browser extensions that can handle them + but they are saved correctly. and cant beat raw quality of 32-bit `tiff` or `psd` :) +- change in behavior: `xformers` will be uninstalled on startup if they are not active + if you do have `xformers` selected as your desired cross-optimization method, then they will be used + reason is that a lot of libaries try to blindly import xformers even if they are not selected or not functional + +## Update for 2023-05-30 + +Another bigger one...And more to come in the next few days... + +- new live preview mode: taesd + i really like this one, so its enabled as default for new installs +- settings search feature +- new sampler: dpm++ 2m sde +- fully common save/zip/delete (new) options in all tabs + which (again) meant rework of process image tab +- system info tab: live gpu utilization/memory graphs for nvidia gpus +- updated controlnet interface +- minor style changes +- updated lora, swinir, scunet and ldsr code from upstream +- start of merge from a1111 v1.3 + +## Update for 2023-05-26 + +Some quality-of-life improvements... + +- updated [README](https://github.com/vladmandic/automatic/blob/master/README.md) +- created [CHANGELOG](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) + this will be the source for all info about new things moving forward + and cross-posted to [Discussions#99](https://github.com/vladmandic/automatic/discussions/99) as well as discord [announcements](https://discord.com/channels/1101998836328697867/1109953953396957286) +- optimize model loading on startup + this should reduce startup time significantly +- set default cross-optimization method for each platform backend + applicable for new installs only + - `cuda` => Scaled-Dot-Product + - `rocm` => Sub-quadratic + - `directml` => Sub-quadratic + - `ipex` => invokeais + - `mps` => Doggettxs + - `cpu` => Doggettxs +- optimize logging +- optimize profiling + now includes startup profiling as well as `cuda` profiling during generate +- minor lightbox improvements +- bugfixes...i dont recall when was a release with at least several of those + +other than that - first stage of [Diffusers](https://github.com/huggingface/diffusers) integration is now in master branch +i dont recommend anyone to try it (and dont even think reporting issues for it) +but if anyone wants to contribute, take a look at [project page](https://github.com/users/vladmandic/projects/1/views/1) + +## Update for 2023-05-23 + +Major internal work with perhaps not that much user-facing to show for it ;) + +- update core repos: **stability-ai**, **taming-transformers**, **k-diffusion, blip**, **codeformer** + note: to avoid disruptions, this is applicable for new installs only +- tested with **torch 2.1**, **cuda 12.1**, **cudnn 8.9** + (production remains on torch2.0.1+cuda11.8+cudnn8.8) +- fully extend support of `--data-dir` + allows multiple installations to share pretty much everything, not just models + especially useful if you want to run in a stateless container or cloud instance +- redo api authentication + now api authentication will use same user/pwd (if specified) for ui and strictly enforce it using httpbasicauth + new authentication is also fully supported in combination with ssl for both sync and async calls + if you want to use api programatically, see examples in `cli/sdapi.py` +- add dark/light theme mode toggle +- redo some `clip-skip` functionality +- better matching for vae vs model +- update to `xyz grid` to allow creation of large number of images without creating grid itself +- update `gradio` (again) +- more prompt parser optimizations +- better error handling when importing image settings which are not compatible with current install + for example, when upscaler or sampler originally used is not available +- fixes...amazing how many issues were introduced by porting a1111 v1.20 code without adding almost no new functionality + next one is v1.30 (still in dev) which does bring a lot of new features + +## Update for 2023-05-17 + +This is a massive one due to huge number of changes, +but hopefully it will go ok... + +- new **prompt parsers** + select in UI -> Settings -> Stable Diffusion + - **Full**: my new implementation + - **A1111**: for backward compatibility + - **Compel**: as used in ComfyUI and InvokeAI (a.k.a *Temporal Weighting*) + - **Fixed**: for really old backward compatibility +- monitor **extensions** install/startup and + log if they modify any packages/requirements + this is a *deep-experimental* python hack, but i think its worth it as extensions modifying requirements + is one of most common causes of issues +- added `--safe` command line flag mode which skips loading user extensions + please try to use it before opening new issue +- reintroduce `--api-only` mode to start server without ui +- port *all* upstream changes from [A1111](https://github.com/AUTOMATIC1111/stable-diffusion-webui) + up to today - commit hash `89f9faa` + +## Update for 2023-05-15 + +- major work on **prompt parsing** + this can cause some differences in results compared to what youre used to, but its all about fixes & improvements + - prompt parser was adding commas and spaces as separate words and tokens and/or prefixes + - negative prompt weight using `[word:weight]` was ignored, it was always `0.909` + - bracket matching was anything but correct. complex nested attention brackets are now working. + - btw, if you run with `--debug` flag, youll now actually see parsed prompt & schedule +- updated all scripts in `/cli` +- add option in settings to force different **latent sampler** instead of using primary only +- add **interrupt/skip** capabilities to process images + +## Update for 2023-05-13 + +This is mostly about optimizations... + +- improved `torch-directml` support + especially interesting for **amd** users on **windows** where **torch+rocm** is not yet available + dont forget to run using `--use-directml` or default is **cpu** +- improved compatibility with **nvidia** rtx 1xxx/2xxx series gpus +- fully working `torch.compile` with **torch 2.0.1** + using `inductor` compile takes a while on first run, but does result in 5-10% performance increase +- improved memory handling + for highest performance, you can also disable aggressive **gc** in settings +- improved performance + especially *after* generate as image handling has been moved to separate thread +- allow per-extension updates in extension manager +- option to reset configuration in settings + +## Update for 2023-05-11 + +- brand new **extension manager** + this is pretty much a complete rewrite, so new issues are possible +- support for `torch` 2.0.1 + note that if you are experiencing frequent hangs, this may be a worth a try +- updated `gradio` to 3.29.0 +- added `--reinstall` flag to force reinstall of all packages +- auto-recover & re-attempt when `--upgrade` is requested but fails +- check for duplicate extensions + +## Update for 2023-05-08 + +Back online with few updates: + +- bugfixes. yup, quite a lot of those +- auto-detect some cpu/gpu capabilities on startup + this should reduce need to tweak and tune settings like no-half, no-half-vae, fp16 vs fp32, etc +- configurable order of top level tabs +- configurable order of scripts in txt2img and img2img + for both, see sections in ui-> settings -> user interface + +## Update for 2023-05-04 + +Again, few days later... + +- reviewed/ported **all** commits from **A1111** upstream + some a few are not applicable as i already have alternative implementations + and very few i choose not to implement (save/restore last-known-good-config is a bad hack) + otherwise, were fully up to date (it doesnt show on fork status as code merges were mostly manual due to conflicts) + but...due to sheer size of the updates, this may introduce some temporary issues +- redesigned server restart function + now available and working in ui + actually, since server restart is now a true restart and not ui restart, it can be used much more flexibly +- faster model load + plus support for slower devices via stream-load function (in ui settings) +- better logging + this includes new `--debug` flag for more verbose logging when troubleshooting + +## Update for 2023-05-01 + +Been a bit quieter for last few days as changes were quite significant, but finally here we are... + +- Updated core libraries: Gradio, Diffusers, Transformers +- Added support for **Intel ARC** GPUs via Intel OneAPI IPEX (auto-detected) +- Added support for **TorchML** (set by default when running on non-compatible GPU or on CPU) +- Enhanced support for AMD GPUs with **ROCm** +- Enhanced support for Apple **M1/M2** +- Redesigned command params: run `webui --help` for details +- Redesigned API and script processing +- Experimental support for multiple **Torch compile** options +- Improved sampler support +- Google Colab: + Maintained by +- Fixes, fixes, fixes... + +To take advantage of new out-of-the-box tunings, its recommended to delete your `config.json` so new defaults are applied. its not necessary, but otherwise you may need to play with UI Settings to get the best of Intel ARC, TorchML, ROCm or Apple M1/M2. + +## Update for 2023-04-27 + +a bit shorter list as: + +- ive been busy with bugfixing + there are a lot of them, not going to list each here. + but seems like critical issues backlog is quieting down and soon i can focus on new features development. +- ive started collaboration with couple of major projects, + hopefully this will accelerate future development. + +whats new: + +- ability to view/add/edit model description shown in extra networks cards +- add option to specify fallback sampler if primary sampler is not compatible with desired operation +- make clip skip a local parameter +- remove obsolete items from UI settings +- set defaults for AMD ROCm + if you have issues, you may want to start with a fresh install so configuration can be created from scratch +- set defaults for Apple M1/M2 + if you have issues, you may want to start with a fresh install so configuration can be created from scratch + +## Update for 2023-04-25 + +- update process image -> info +- add VAE info to metadata +- update GPU utility search paths for better GPU type detection +- update git flags for wider compatibility +- update environment tuning +- update ti training defaults +- update VAE search paths +- add compatibility opts for some old extensions +- validate script args for always-on scripts + fixes: deforum with controlnet + +## Update for 2023-04-24 + +- identify race condition where generate locks up while fetching preview +- add pulldowns to x/y/z script +- add VAE rollback feature in case of NaNs +- use samples format for live preview +- add token merging +- use **Approx NN** for live preview +- create default `styles.csv` +- fix setup not installing `tensorflow` dependencies +- update default git flags to reduce number of warnings + +## Update for 2023-04-23 + +- fix VAE dtype + should fix most issues with NaN or black images +- add built-in Gradio themes +- reduce requirements +- more AMD specific work +- initial work on Apple platform support +- additional PR merges +- handle torch cuda crashing in setup +- fix setup race conditions +- fix ui lightbox +- mark tensorflow as optional +- add additional image name templates + +## Update for 2023-04-22 + +- autodetect which system libs should be installed + this is a first pass of autoconfig for **nVidia** vs **AMD** environments +- fix parse cmd line args from extensions +- only install `xformers` if actually selected as desired cross-attention method +- do not attempt to use `xformers` or `sdp` if running on cpu +- merge tomesd token merging +- merge 23 PRs pending from a1111 backlog (!!) + +*expect shorter updates for the next few days as ill be partially ooo* + +## Update for 2023-04-20 + +- full CUDA tuning section in UI Settings +- improve exif/pnginfo metadata parsing + it can now handle 3rd party images or images edited in external software +- optimized setup performance and logging +- improve compatibility with some 3rd party extensions + for example handle extensions that install packages directly from github urls +- fix initial model download if no models found +- fix vae not found issues +- fix multiple git issues + +note: if you previously had command line optimizations such as --no-half, those are now ignored and moved to ui settings + +## Update for 2023-04-19 + +- fix live preview +- fix model merge +- fix handling of user-defined temp folders +- fix submit benchmark +- option to override `torch` and `xformers` installer +- separate benchmark data for system-info extension +- minor css fixes +- created initial merge backlog from pending prs on a1111 repo + see #258 for details + +## Update for 2023-04-18 + +- reconnect ui to active session on browser restart + this is one of most frequently asked for items, finally figured it out + works for text and image generation, but not for process as there is no progress bar reported there to start with +- force unload `xformers` when not used + improves compatibility with AMD/M1 platforms +- add `styles.csv` to UI settings to allow customizing path +- add `--skip-git` to cmd flags for power users that want + to skip all git checks and operations and perform manual updates +- add `--disable-queue` to cmd flags that disables Gradio queues (experimental) + this forces it to use HTTP instead of WebSockets and can help on unreliable network connections +- set scripts & extensions loading priority and allow custom priorities + fixes random extension issues: + `ScuNet` upscaler disappearing, `Additional Networks` not showing up on XYZ axis, etc. +- improve html loading order +- remove some `asserts` causing runtime errors and replace with user-friendly messages +- update README.md + +## Update for 2023-04-17 + +- **themes** are now dynamic and discovered from list of available gradio themes on huggingface + its quite a list of 30+ supported themes so far +- added option to see **theme preview** without the need to apply it or restart server +- integrated **image info** functionality into **process image** tab and removed separate **image info** tab +- more installer improvements +- fix urls +- updated github integration +- make model download as optional if no models found + +## Update for 2023-04-16 + +- support for ui themes! to to *settings* -> *user interface* -> "ui theme* + includes 12 predefined themes +- ability to restart server from ui +- updated requirements +- removed `styles.csv` from repo, its now fully under user control +- removed model-keyword extension as overly aggressive +- rewrite of the fastapi middleware handlers +- install bugfixes, hopefully new installer is now ok \ + i really want to focus on features and not troubleshooting installer + +## Update for 2023-04-15 + +- update default values +- remove `ui-config.json` from repo, its now fully under user control +- updated extensions manager +- updated locon/lycoris plugin +- enable quick launch by default +- add multidiffusion upscaler extensions +- add model keyword extension +- enable strong linting +- fix circular imports +- fix extensions updated +- fix git update issues +- update github templates + +## Update for 2023-04-14 + +- handle duplicate extensions +- redo exception handler +- fix generate forever +- enable cmdflags compatibility +- change default css font +- fix ti previews on initial start +- enhance tracebacks +- pin transformers version to last known good version +- fix extension loader + +## Update for 2023-04-12 + +This has been pending for a while, but finally uploaded some massive changes + +- New launcher + - `webui.bat` and `webui.sh`: + Platform specific wrapper scripts that starts `launch.py` in Python virtual environment + *Note*: Server can run without virtual environment, but it is recommended to use it + This is carry-over from original repo + **If youre unsure which launcher to use, this is the one you want** + - `launch.py`: + Main startup script + Can be used directly to start server in manually activated `venv` or to run it without `venv` + - `installer.py`: + Main installer, used by `launch.py` + - `webui.py`: + Main server script +- New logger +- New exception handler +- Built-in performance profiler +- New requirements handling +- Move of most of command line flags into UI Settings diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000000000000000000000000000000000000..f7fd4bba3d2dfe6ab4545b054f9d1ce47dfcbd5e --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,28 @@ +cff-version: 1.2.0 +title: SD.Next +url: 'https://github.com/vladmandic/automatic' +message: >- + If you use this software, please cite it using the + metadata from this file +type: software +authors: + - given-names: Vladimir + name-particle: Vlado + family-names: Mandic + orcid: 'https://orcid.org/0009-0003-4592-5074' +identifiers: + - type: url + value: 'https://github.com/vladmandic' + description: GitHub + - type: url + value: 'https://www.linkedin.com/in/cyan051/' + description: LinkedIn +repository-code: 'https://github.com/vladmandic/automatic' +abstract: >- + SD.Next: Advanced Implementation of Stable Diffusion and + other diffusion models for text, image and video + generation +keywords: + - stablediffusion diffusers sdnext +license: AGPL-3.0 +date-released: 2022-12-24 diff --git a/README.md b/README.md index 004bd5990ae1eac319c2290802ff88902301dfd2..e1486d051a08e4b05c00b2ce429c4dfafe4c69d8 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,281 @@ --- -title: Test -emoji: 👁 -colorFrom: green -colorTo: purple +title: test +app_file: webui.py sdk: gradio -sdk_version: 4.31.1 -app_file: app.py -pinned: false +sdk_version: 4.29.0 --- +
-Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference +# SD.Next + +**Stable Diffusion implementation with advanced features** + +[![Sponsors](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/vladmandic) +![Last Commit](https://img.shields.io/github/last-commit/vladmandic/automatic?svg=true) +![License](https://img.shields.io/github/license/vladmandic/automatic?svg=true) +[![Discord](https://img.shields.io/discord/1101998836328697867?logo=Discord&svg=true)](https://discord.gg/VjvR2tabEX) + +[Wiki](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.gg/VjvR2tabEX) | [Changelog](CHANGELOG.md) + +
+
+ +## Notable features + +All individual features are not listed here, instead check [ChangeLog](CHANGELOG.md) for full list of changes +- Multiple backends! + ▹ **Diffusers | Original** +- Multiple diffusion models! + ▹ **Stable Diffusion 1.5/2.1 | SD-XL | LCM | Segmind | Kandinsky | Pixart-α | Stable Cascade | Würstchen | aMUSEd | DeepFloyd IF | UniDiffusion | SD-Distilled | BLiP Diffusion | KOALA | etc.** +- Built-in Control for Text, Image, Batch and video processing! + ▹ **ControlNet | ControlNet XS | Control LLLite | T2I Adapters | IP Adapters** +- Multiplatform! + ▹ **Windows | Linux | MacOS with CPU | nVidia | AMD | IntelArc | DirectML | OpenVINO | ONNX+Olive | ZLUDA** +- Platform specific autodetection and tuning performed on install +- Optimized processing with latest `torch` developments with built-in support for `torch.compile` + and multiple compile backends: *Triton, ZLUDA, StableFast, DeepCache, OpenVINO, NNCF, IPEX* +- Improved prompt parser +- Enhanced *Lora*/*LoCon*/*Lyco* code supporting latest trends in training +- Built-in queue management +- Enterprise level logging and hardened API +- Built in installer with automatic updates and dependency management +- Modernized UI with theme support and number of built-in themes *(dark and light)* + +
+ +*Main text2image interface*: +![Screenshot-Dark](html/screenshot-text2image.jpg) + +For screenshots and informations on other available themes, see [Themes Wiki](https://github.com/vladmandic/automatic/wiki/Themes) + +
+ +## Backend support + +**SD.Next** supports two main backends: *Diffusers* and *Original*: + +- **Diffusers**: Based on new [Huggingface Diffusers](https://huggingface.co/docs/diffusers/index) implementation + Supports *all* models listed below + This backend is set as default for new installations + See [wiki article](https://github.com/vladmandic/automatic/wiki/Diffusers) for more information +- **Original**: Based on [LDM](https://github.com/Stability-AI/stablediffusion) reference implementation and significantly expanded on by [A1111](https://github.com/AUTOMATIC1111/stable-diffusion-webui) + This backend and is fully compatible with most existing functionality and extensions written for *A1111 SDWebUI* + Supports **SD 1.x** and **SD 2.x** models + All other model types such as *SD-XL, LCM, PixArt, Segmind, Kandinsky, etc.* require backend **Diffusers** + +## Model support + +Additional models will be added as they become available and there is public interest in them + +- [RunwayML Stable Diffusion](https://github.com/Stability-AI/stablediffusion/) 1.x and 2.x *(all variants)* +- [StabilityAI Stable Diffusion XL](https://github.com/Stability-AI/generative-models) +- [StabilityAI Stable Video Diffusion](https://huggingface.co/stabilityai/stable-video-diffusion-img2vid) Base, XT 1.0, XT 1.1 +- [LCM: Latent Consistency Models](https://github.com/openai/consistency_models) +- [Playground](https://huggingface.co/playgroundai/playground-v2-256px-base) *v1, v2 256, v2 512, v2 1024 and latest v2.5* +- [Stable Cascade](https://github.com/Stability-AI/StableCascade) *Full* and *Lite* +- [aMUSEd 256](https://huggingface.co/amused/amused-256) 256 and 512 +- [Segmind Vega](https://huggingface.co/segmind/Segmind-Vega) +- [Segmind SSD-1B](https://huggingface.co/segmind/SSD-1B) +- [Segmind SegMoE](https://github.com/segmind/segmoe) *SD and SD-XL* +- [Kandinsky](https://github.com/ai-forever/Kandinsky-2) *2.1 and 2.2 and latest 3.0* +- [PixArt-α XL 2](https://github.com/PixArt-alpha/PixArt-alpha) *Medium and Large* +- [Warp Wuerstchen](https://huggingface.co/blog/wuertschen) +- [Tsinghua UniDiffusion](https://github.com/thu-ml/unidiffuser) +- [DeepFloyd IF](https://github.com/deep-floyd/IF) *Medium and Large* +- [ModelScope T2V](https://huggingface.co/damo-vilab/text-to-video-ms-1.7b) +- [Segmind SD Distilled](https://huggingface.co/blog/sd_distillation) *(all variants)* +- [BLIP-Diffusion](https://dxli94.github.io/BLIP-Diffusion-website/) +- [KOALA 700M](https://github.com/youngwanLEE/sdxl-koala) +- [VGen](https://huggingface.co/ali-vilab/i2vgen-xl) + + +Also supported are modifiers such as: +- **LCM** and **Turbo** (*adversarial diffusion distillation*) networks +- All **LoRA** types such as LoCon, LyCORIS, HADA, IA3, Lokr, OFT +- **IP-Adapters** for SD 1.5 and SD-XL +- **InstantID**, **FaceSwap**, **FaceID**, **PhotoMerge** +- **AnimateDiff** for SD 1.5 + +## Examples + +*IP Adapters*: +![Screenshot-IPAdapter](html/screenshot-ipadapter.jpg) + +*Color grading*: +![Screenshot-Color](html/screenshot-color.jpg) + +*InstantID*: +![Screenshot-InstantID](html/screenshot-instantid.jpg) + +> [!IMPORTANT] +> - Loading any model other than standard SD 1.x / SD 2.x requires use of backend **Diffusers** +> - Loading any other models using **Original** backend is not supported +> - Loading manually download model `.safetensors` files is supported for specified models only (typically SD 1.x / SD 2.x / SD-XL models only) +> - For all other model types, use backend **Diffusers** and use built in Model downloader or + select model from Networks -> Models -> Reference list in which case it will be auto-downloaded and loaded + +## Platform support + +- *nVidia* GPUs using **CUDA** libraries on both *Windows and Linux* +- *AMD* GPUs using **ROCm** libraries on *Linux* + Support will be extended to *Windows* once AMD releases ROCm for Windows +- *Intel Arc* GPUs using **OneAPI** with *IPEX XPU* libraries on both *Windows and Linux* +- Any GPU compatible with *DirectX* on *Windows* using **DirectML** libraries + This includes support for AMD GPUs that are not supported by native ROCm libraries +- Any GPU or device compatible with **OpenVINO** libraries on both *Windows and Linux* +- *Apple M1/M2* on *OSX* using built-in support in Torch with **MPS** optimizations +- *ONNX/Olive* + +## Install + +- [Step-by-step install guide](https://github.com/vladmandic/automatic/wiki/Installation) +- [Advanced install notes](https://github.com/vladmandic/automatic/wiki/Advanced-Install) +- [Common installation errors](https://github.com/vladmandic/automatic/discussions/1627) +- [FAQ](https://github.com/vladmandic/automatic/discussions/1011) +- If you can't run us locally, try our friends at [RunDuffusion!](https://rundiffusion.com?utm_source=github&utm_medium=referral&utm_campaign=SDNext) + +> [!TIP] +> - Server can run with or without virtual environment, + Recommended to use `VENV` to avoid library version conflicts with other applications +> - **nVidia/CUDA** / **AMD/ROCm** / **Intel/OneAPI** are auto-detected if present and available, + For any other use case such as **DirectML**, **ONNX/Olive**, **OpenVINO** specify required parameter explicitly + or wrong packages may be installed as installer will assume CPU-only environment +> - Full startup sequence is logged in `sdnext.log`, + so if you encounter any issues, please check it first + +### Run + +Once SD.Next is installed, simply run `webui.ps1` or `webui.bat` (*Windows*) or `webui.sh` (*Linux or MacOS*) + +List of available parameters, run `webui --help` for the full & up-to-date list: + + Server options: + --config CONFIG Use specific server configuration file, default: config.json + --ui-config UI_CONFIG Use specific UI configuration file, default: ui-config.json + --medvram Split model stages and keep only active part in VRAM, default: False + --lowvram Split model components and keep only active part in VRAM, default: False + --ckpt CKPT Path to model checkpoint to load immediately, default: None + --vae VAE Path to VAE checkpoint to load immediately, default: None + --data-dir DATA_DIR Base path where all user data is stored, default: + --models-dir MODELS_DIR Base path where all models are stored, default: models + --allow-code Allow custom script execution, default: False + --share Enable UI accessible through Gradio site, default: False + --insecure Enable extensions tab regardless of other options, default: False + --use-cpu USE_CPU [USE_CPU ...] Force use CPU for specified modules, default: [] + --listen Launch web server using public IP address, default: False + --port PORT Launch web server with given server port, default: 7860 + --freeze Disable editing settings + --auth AUTH Set access authentication like "user:pwd,user:pwd"" + --auth-file AUTH_FILE Set access authentication using file, default: None + --autolaunch Open the UI URL in the system's default browser upon launch + --docs Mount API docs, default: False + --api-only Run in API only mode without starting UI + --api-log Enable logging of all API requests, default: False + --device-id DEVICE_ID Select the default CUDA device to use, default: None + --cors-origins CORS_ORIGINS Allowed CORS origins as comma-separated list, default: None + --cors-regex CORS_REGEX Allowed CORS origins as regular expression, default: None + --tls-keyfile TLS_KEYFILE Enable TLS and specify key file, default: None + --tls-certfile TLS_CERTFILE Enable TLS and specify cert file, default: None + --tls-selfsign Enable TLS with self-signed certificates, default: False + --server-name SERVER_NAME Sets hostname of server, default: None + --no-hashing Disable hashing of checkpoints, default: False + --no-metadata Disable reading of metadata from models, default: False + --disable-queue Disable queues, default: False + --subpath SUBPATH Customize the URL subpath for usage with reverse proxy + --backend {original,diffusers} force model pipeline type + --allowed-paths ALLOWED_PATHS [ALLOWED_PATHS ...] add additional paths to paths allowed for web access + + Setup options: + --reset Reset main repository to latest version, default: False + --upgrade Upgrade main repository to latest version, default: False + --requirements Force re-check of requirements, default: False + --quick Bypass version checks, default: False + --use-directml Use DirectML if no compatible GPU is detected, default: False + --use-openvino Use Intel OpenVINO backend, default: False + --use-ipex Force use Intel OneAPI XPU backend, default: False + --use-cuda Force use nVidia CUDA backend, default: False + --use-rocm Force use AMD ROCm backend, default: False + --use-zluda Force use ZLUDA, AMD GPUs only, default: False + --use-xformers Force use xFormers cross-optimization, default: False + --skip-requirements Skips checking and installing requirements, default: False + --skip-extensions Skips running individual extension installers, default: False + --skip-git Skips running all GIT operations, default: False + --skip-torch Skips running Torch checks, default: False + --skip-all Skips running all checks, default: False + --skip-env Skips setting of env variables during startup, default: False + --experimental Allow unsupported versions of libraries, default: False + --reinstall Force reinstallation of all requirements, default: False + --test Run test only and exit + --version Print version information + --ignore Ignore any errors and attempt to continue + --safe Run in safe mode with no user extensions + + Logging options: + --log LOG Set log file, default: None + --debug Run installer with debug logging, default: False + --profile Run profiler, default: False + +## Notes + +### Control + +**SD.Next** comes with built-in control for all types of text2image, image2image, video2video and batch processing + +*Control interface*: +![Screenshot-Control](html/screenshot-control.jpg) + +*Control processors*: +![Screenshot-Process](html/screenshot-processors.jpg) + +*Masking*: +![Screenshot-Mask](html/screenshot-mask.jpg) + +### **Extensions** + +SD.Next comes with several extensions pre-installed: + +- [ControlNet](https://github.com/Mikubill/sd-webui-controlnet) (*active in backend: original only*) +- [Agent Scheduler](https://github.com/ArtVentureX/sd-webui-agent-scheduler) +- [Image Browser](https://github.com/AlUlkesh/stable-diffusion-webui-images-browser) + +### **Collab** + +- We'd love to have additional maintainers (with comes with full repo rights). If you're interested, ping us! +- In addition to general cross-platform code, desire is to have a lead for each of the main platforms +This should be fully cross-platform, but we'd really love to have additional contributors and/or maintainers to join and help lead the efforts on different platforms + +### **Credits** + +- Main credit goes to [Automatic1111 WebUI](https://github.com/AUTOMATIC1111/stable-diffusion-webui) for original codebase +- Additional credits are listed in [Credits](https://github.com/AUTOMATIC1111/stable-diffusion-webui/#credits) +- Licenses for modules are listed in [Licenses](html/licenses.html) + +### **Evolution** + + + + + starts + + + +- [OSS Stats](https://ossinsight.io/analyze/vladmandic/automatic#overview) + +### **Docs** + +If you're unsure how to use a feature, best place to start is [Wiki](https://github.com/vladmandic/automatic/wiki) and if its not there, +check [ChangeLog](CHANGELOG.md) for when feature was first introduced as it will always have a short note on how to use it + +- [Wiki](https://github.com/vladmandic/automatic/wiki) +- [ReadMe](README.md) +- [ToDo](TODO.md) +- [ChangeLog](CHANGELOG.md) +- [CLI Tools](cli/README.md) + +### **Sponsors** + +
+Allan GrantBrent OzarMatthew RunoSalad Technologiesa.v.mantzaris +
+ +
diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000000000000000000000000000000000..9c1e11bb03b8590837bd147bf3033174b19db70b --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,36 @@ +# Security & Privacy Policy + +
+ +## Issues + +All issues are tracked publicly on GitHub: + +
+ +## Vulnerabilities + +`SD.Next` code base and included dependencies are automatically scanned against known security vulnerabilities + +Any code commit is validated before merge + +- [Dependencies](https://github.com/vladmandic/automatic/security/dependabot) +- [Scanning Alerts](https://github.com/vladmandic/automatic/security/code-scanning) + +
+ +## Privacy + +`SD.Next` app: + +- Is fully self-contained and does not send or share data of any kind with external targets +- Does not store any user or system data tracking, user provided inputs (images, video) or detection results +- Does not utilize any analytic services (such as Google Analytics) + +`SD.Next` library can establish external connections *only* for following purposes and *only* when explicitly configured by user: + +- Download extensions and themes indexes from automatically updated indexes +- Download required packages and repositories from GitHub during installation/upgrade +- Download installed/enabled extensions +- Download models from CivitAI and/or Huggingface when instructed by user +- Submit benchmark info upon user interaction diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000000000000000000000000000000000000..95641f0088f54cc04dc291e75ea58c5a81b4657b --- /dev/null +++ b/TODO.md @@ -0,0 +1,20 @@ +# TODO + +Main ToDo list can be found at [GitHub projects](https://github.com/users/vladmandic/projects) + +## Candidates for next release + +- defork +- stable diffusion 3.0 +- ipadapter masking: +- x-adapter: +- async lowvram: +- init latents: variations, img2img +- diffusers public callbacks +- remove builtin: controlnet +- remove builtin: image-browser + +## Control missing features + +- second pass: +- control api diff --git a/cli/README.md b/cli/README.md new file mode 100644 index 0000000000000000000000000000000000000000..70de255b18acff4674402b381c0ecdbbbb4eccd0 --- /dev/null +++ b/cli/README.md @@ -0,0 +1,108 @@ +# Stable-Diffusion Productivity Scripts + +Note: All scripts have built-in `--help` parameter that can be used to get more information + +
+ +## Main Scripts + +### Generate + +Text-to-image with all of the possible parameters +Supports upsampling, face restoration and grid creation +> python generate.py + +By default uses parameters from `generate.json` + +Parameters that are not specified will be randomized: + +- Prompt will be dynamically created from template of random samples: `random.json` +- Sampler/Scheduler will be randomly picked from available ones +- CFG Scale set to 5-10 + +### Train + +Combined pipeline for **embeddings**, **lora**, **lycoris**, **dreambooth** and **hypernetwork** +Optionally runs several image processing steps before training: + +- keep original image +- detect and extract face +- detect and extract body +- detect blur +- detect dynamic range +- attempt to upscale low resolution images +- attempt to restore quality of low quality images +- automatically generate captions using interrogate +- resize image +- square image +- run image segmentation to remove background + +> python train.py + +
+ +## Auxiliary Scripts + +### Benchmark + +> python run-benchmark.py + +### Create Previews + +Create previews for **embeddings**, **lora**, **lycoris**, **dreambooth** and **hypernetwork** + +> python create-previews.py + +## Image Grid + +> python image-grid.py + +### Image Watermark + +Create invisible image watermark and remove existing EXIF tags + +> python image-watermark.py + +### Image Interrogate + +Runs CLiP and Booru image interrogation + +> python image-interrogate.py + +### Palette Extract + +Extract color palette from image(s) + +> python image-palette.py + +### Prompt Ideas + +Generate complex prompt ideas + +> python prompt-ideas.py + +### Prompt Promptist + +Attempts to beautify the provided prompt + +> python prompt-promptist.py + +### Video Extract + +Extract frames from video files + +> python video-extract.py + +
+ +## Utility Scripts + +### SDAPI + +Utility module that handles async communication to Automatic API endpoints +Note: Requires SD API + +Can be used to manually execute specific commands: +> python sdapi.py progress +> python sdapi.py interrupt +> python sdapi.py shutdown diff --git a/cli/clone.py b/cli/clone.py new file mode 100644 index 0000000000000000000000000000000000000000..2ba0851d3383e65804de093f3942b549cd02ba50 --- /dev/null +++ b/cli/clone.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python +import os +import logging +import git +from rich import console, progress + + +class GitRemoteProgress(git.RemoteProgress): + OP_CODES = ["BEGIN", "CHECKING_OUT", "COMPRESSING", "COUNTING", "END", "FINDING_SOURCES", "RECEIVING", "RESOLVING", "WRITING"] + OP_CODE_MAP = { getattr(git.RemoteProgress, _op_code): _op_code for _op_code in OP_CODES } + + def __init__(self, url, folder) -> None: + super().__init__() + self.url = url + self.folder = folder + self.progressbar = progress.Progress( + progress.SpinnerColumn(), + progress.TextColumn("[cyan][progress.description]{task.description}"), + progress.BarColumn(), + progress.TextColumn("[progress.percentage]{task.percentage:>3.0f}%"), + progress.TimeRemainingColumn(), + progress.TextColumn("[yellow]<{task.fields[url]}>"), + progress.TextColumn("{task.fields[message]}"), + console=console.Console(), + transient=False, + ) + self.progressbar.start() + self.active_task = None + + def __del__(self) -> None: + self.progressbar.stop() + + @classmethod + def get_curr_op(cls, op_code: int) -> str: + op_code_masked = op_code & cls.OP_MASK + return cls.OP_CODE_MAP.get(op_code_masked, "?").title() + + def update(self, op_code: int, cur_count: str | float, max_count: str | float | None = None, message: str | None = "") -> None: + if op_code & self.BEGIN: + self.curr_op = self.get_curr_op(op_code) # pylint: disable=attribute-defined-outside-init + self.active_task = self.progressbar.add_task(description=self.curr_op, total=max_count, message=message, url=self.url) + self.progressbar.update(task_id=self.active_task, completed=cur_count, message=message) + if op_code & self.END: + self.progressbar.update(task_id=self.active_task, message=f"[bright_black]{message}") + + +def clone(url: str, folder: str): + git.Repo.clone_from( + url=url, + to_path=folder, + progress=GitRemoteProgress(url=url, folder=folder), + multi_options=['--config core.compression=0', '--config core.loosecompression=0', '--config pack.window=0'], + allow_unsafe_options=True, + depth=1, + ) + + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description = 'downloader') + parser.add_argument('--url', required=True, help="download url, required") + parser.add_argument('--folder', required=False, help="output folder, default: autodetect") + args = parser.parse_args() + logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s: %(message)s") + log = logging.getLogger(__name__) + try: + if not args.url.startswith('http'): + raise ValueError(f'invalid url: {args.url}') + f = args.url.split('/')[-1].split('.')[0] if args.folder is None else args.folder + if os.path.exists(f): + raise FileExistsError(f'folder already exists: {f}') + log.info(f'Clone start: url={args.url} folder={f}') + clone(url=args.url, folder=f) + log.info(f'Clone complete: url={args.url} folder={f}') + except KeyboardInterrupt: + log.warning(f'Clone cancelled: url={args.url} folder={f}') + except Exception as e: + log.error(f'Clone: url={args.url} {e}') diff --git a/cli/create-previews.py b/cli/create-previews.py new file mode 100644 index 0000000000000000000000000000000000000000..58c2136dfe0db4593f0f426a2a4dc5050dd03719 --- /dev/null +++ b/cli/create-previews.py @@ -0,0 +1,346 @@ +#!/usr/bin/env python +# pylint: disable=no-member +import os +import re +import json +import time +import logging +import importlib +import asyncio +import argparse +from pathlib import Path +from util import Map, log +from sdapi import get, post, close +from generate import generate # pylint: disable=import-error +grid = importlib.import_module('image-grid').grid + + +options = Map({ + # used by extra networks + 'prompt': 'photo of , photograph, posing, pose, high detailed, intricate, elegant, sharp focus, skin texture, looking forward, facing camera, 135mm, shot on dslr, canon 5d, 4k, modelshoot style, cinematic lighting', + # used by models + 'prompts': [ + ('photo citiscape', 'cityscape during night, photorealistic, high detailed, sharp focus, depth of field, 4k'), + ('photo car', 'photo of a sports car, high detailed, sharp focus, dslr, cinematic lighting, realistic'), + ('photo woman', 'portrait photo of beautiful woman, high detailed, dslr, 35mm'), + ('photo naked', 'full body photo of beautiful sexy naked woman, high detailed, dslr, 35mm'), + + ('photo taylor', 'portrait photo of beautiful woman taylor swift, high detailed, sharp focus, depth of field, dslr, 35mm '), + ('photo ti-mia', 'portrait photo of beautiful woman "ti-mia", naked, high detailed, dslr, 35mm'), + ('photo ti-vlado', 'portrait photo of man "ti-vlado", high detailed, dslr, 35mm'), + ('photo lora-vlado', 'portrait photo of man vlado, high detailed, dslr, 35mm '), + + ('wlop', 'a stunning portrait of sexy teen girl in a wet t-shirt, vivid color palette, digital painting, octane render, highly detailed, particles, light effect, volumetric lighting, art by wlop'), + ('greg rutkowski', 'beautiful woman, high detailed, sharp focus, depth of field, 4k, art by greg rutkowski'), + ('carne griffiths', 'beautiful woman taylor swift, high detailed, sharp focus, depth of field, art by carne griffiths '), + ('carne griffiths', 'man vlado, high detailed, sharp focus, depth of field, art by carne griffiths '), + ], + # save format + 'format': '.jpg', + # used by generate script + 'paths': { + "root": "/mnt/c/Users/mandi/OneDrive/Generative/Generate", + "generate": "image", + "upscale": "upscale", + "grid": "grid", + }, + # generate params + 'generate': { + 'restore_faces': True, + 'prompt': '', + 'negative_prompt': 'foggy, blurry, blurred, duplicate, ugly, mutilated, mutation, mutated, out of frame, bad anatomy, disfigured, deformed, censored, low res, low resolution, watermark, text, poorly drawn face, poorly drawn hands, signature', + 'steps': 20, + 'batch_size': 2, + 'n_iter': 1, + 'seed': -1, + 'sampler_name': 'UniPC', + 'cfg_scale': 6, + 'width': 512, + 'height': 512, + }, + 'lora': { + 'strength': 1.0, + }, + 'hypernetwork': { + 'keyword': '', + 'strength': 1.0, + }, +}) + + +def preview_exists(folder, model): + model = os.path.splitext(model)[0] + for suffix in ['', '.preview']: + for ext in ['.jpg', '.png', '.webp']: + fn = os.path.join(folder, f'{model}{suffix}{ext}') + if os.path.exists(fn): + return True + return False + + +async def preview_models(params): + data = await get('/sdapi/v1/sd-models') + allmodels = [m['title'] for m in data] + models = [] + excluded = [] + for m in allmodels: # loop through all registered models + ok = True + for e in params.exclude: # check if model is excluded + if e in m: + excluded.append(m) + ok = False + break + if ok: + short = m.split(' [')[0] + short = short.replace('.ckpt', '').replace('.safetensors', '') + models.append(short) + if len(params.input) > 0: # check if model is included in cmd line + filtered = [] + for m in params.input: + if m in models: + filtered.append(m) + else: + log.error({ 'model not found': m }) + return + models = filtered + log.info({ 'models preview' }) + log.info({ 'models': len(models), 'excluded': len(excluded) }) + opt = await get('/sdapi/v1/options') + log.info({ 'total jobs': len(models) * options.generate.batch_size, 'per-model': options.generate.batch_size }) + log.info(json.dumps(options, indent=2)) + for model in models: + if preview_exists(opt['ckpt_dir'], model) and len(params.input) == 0: # if model preview exists and not manually included + log.info({ 'model preview exists': model }) + continue + fn = os.path.join(opt['ckpt_dir'], os.path.splitext(model)[0] + options.format) + log.info({ 'model load': model }) + + opt['sd_model_checkpoint'] = model + del opt['sd_lora'] + del opt['sd_lyco'] + await post('/sdapi/v1/options', opt) + opt = await get('/sdapi/v1/options') + images = [] + labels = [] + t0 = time.time() + for label, p in options.prompts: + options.generate.prompt = p + log.info({ 'model generating': model, 'label': label, 'prompt': options.generate.prompt }) + data = await generate(options = options, quiet=True) + if 'image' in data: + for img in data['image']: + images.append(img) + labels.append(label) + else: + log.error({ 'model': model, 'error': data }) + t1 = time.time() + if len(images) == 0: + log.error({ 'model': model, 'error': 'no images generated' }) + continue + image = grid(images = images, labels = labels, border = 8) + log.info({ 'saving preview': fn, 'images': len(images), 'size': [image.width, image.height] }) + image.save(fn) + t = t1 - t0 + its = 1.0 * options.generate.steps * len(images) / t + log.info({ 'model preview created': model, 'image': fn, 'images': len(images), 'grid': [image.width, image.height], 'time': round(t, 2), 'its': round(its, 2) }) + + opt = await get('/sdapi/v1/options') + if opt['sd_model_checkpoint'] != params.model: + log.info({ 'model set default': params.model }) + opt['sd_model_checkpoint'] = params.model + del opt['sd_lora'] + del opt['sd_lyco'] + await post('/sdapi/v1/options', opt) + + +async def lora(params): + opt = await get('/sdapi/v1/options') + folder = opt['lora_dir'] + if not os.path.exists(folder): + log.error({ 'lora directory not found': folder }) + return + models1 = list(Path(folder).glob('**/*.safetensors')) + models2 = list(Path(folder).glob('**/*.ckpt')) + models = [os.path.splitext(f)[0] for f in models1 + models2] + log.info({ 'loras': len(models) }) + for model in models: + if preview_exists('', model) and len(params.input) == 0: # if model preview exists and not manually included + log.info({ 'lora preview exists': model }) + continue + fn = model + options.format + model = os.path.basename(model) + images = [] + labels = [] + t0 = time.time() + keywords = re.sub(r'\d', '', model) + keywords = keywords.replace('-v', ' ').replace('-', ' ').strip().split(' ') + keyword = '\"' + '\" \"'.join(keywords) + '\"' + options.generate.prompt = options.prompt.replace('', keyword) + options.generate.prompt = options.generate.prompt.replace('', '') + options.generate.prompt += f' ' + log.info({ 'lora generating': model, 'keyword': keyword, 'prompt': options.generate.prompt }) + data = await generate(options = options, quiet=True) + if 'image' in data: + for img in data['image']: + images.append(img) + labels.append(keyword) + else: + log.error({ 'lora': model, 'keyword': keyword, 'error': data }) + t1 = time.time() + if len(images) == 0: + log.error({ 'model': model, 'error': 'no images generated' }) + continue + image = grid(images = images, labels = labels, border = 8) + log.info({ 'saving preview': fn, 'images': len(images), 'size': [image.width, image.height] }) + image.save(fn) + t = t1 - t0 + its = 1.0 * options.generate.steps * len(images) / t + log.info({ 'lora preview created': model, 'image': fn, 'images': len(images), 'grid': [image.width, image.height], 'time': round(t, 2), 'its': round(its, 2) }) + + +async def lyco(params): + opt = await get('/sdapi/v1/options') + folder = opt['lyco_dir'] + if not os.path.exists(folder): + log.error({ 'lyco directory not found': folder }) + return + models1 = list(Path(folder).glob('**/*.safetensors')) + models2 = list(Path(folder).glob('**/*.ckpt')) + models = [os.path.splitext(f)[0] for f in models1 + models2] + log.info({ 'lycos': len(models) }) + for model in models: + if preview_exists('', model) and len(params.input) == 0: # if model preview exists and not manually included + log.info({ 'lyco preview exists': model }) + continue + fn = model + options.format + model = os.path.basename(model) + images = [] + labels = [] + t0 = time.time() + keywords = re.sub(r'\d', '', model) + keywords = keywords.replace('-v', ' ').replace('-', ' ').strip().split(' ') + keyword = '\"' + '\" \"'.join(keywords) + '\"' + options.generate.prompt = options.prompt.replace('', keyword) + options.generate.prompt = options.generate.prompt.replace('', '') + options.generate.prompt += f' ' + log.info({ 'lyco generating': model, 'keyword': keyword, 'prompt': options.generate.prompt }) + data = await generate(options = options, quiet=True) + if 'image' in data: + for img in data['image']: + images.append(img) + labels.append(keyword) + else: + log.error({ 'lyco': model, 'keyword': keyword, 'error': data }) + t1 = time.time() + if len(images) == 0: + log.error({ 'model': model, 'error': 'no images generated' }) + continue + image = grid(images = images, labels = labels, border = 8) + log.info({ 'saving preview': fn, 'images': len(images), 'size': [image.width, image.height] }) + image.save(fn) + t = t1 - t0 + its = 1.0 * options.generate.steps * len(images) / t + log.info({ 'lyco preview created': model, 'image': fn, 'images': len(images), 'grid': [image.width, image.height], 'time': round(t, 2), 'its': round(its, 2) }) + + +async def hypernetwork(params): + opt = await get('/sdapi/v1/options') + folder = opt['hypernetwork_dir'] + if not os.path.exists(folder): + log.error({ 'hypernetwork directory not found': folder }) + return + models = [os.path.splitext(f)[0] for f in Path(folder).glob('**/*.pt')] + log.info({ 'hypernetworks': len(models) }) + for model in models: + if preview_exists(folder, model) and len(params.input) == 0: # if model preview exists and not manually included + log.info({ 'hypernetwork preview exists': model }) + continue + fn = os.path.join(folder, model + options.format) + images = [] + labels = [] + t0 = time.time() + keyword = options.hypernetwork.keyword + options.generate.prompt = options.prompt.replace('', options.hypernetwork.keyword) + options.generate.prompt = options.generate.prompt.replace('', '') + options.generate.prompt = f' ' + options.generate.prompt + log.info({ 'hypernetwork generating': model, 'keyword': keyword, 'prompt': options.generate.prompt }) + data = await generate(options = options, quiet=True) + if 'image' in data: + for img in data['image']: + images.append(img) + labels.append(keyword) + else: + log.error({ 'hypernetwork': model, 'keyword': keyword, 'error': data }) + t1 = time.time() + if len(images) == 0: + log.error({ 'model': model, 'error': 'no images generated' }) + continue + image = grid(images = images, labels = labels, border = 8) + log.info({ 'saving preview': fn, 'images': len(images), 'size': [image.width, image.height] }) + image.save(fn) + t = t1 - t0 + its = 1.0 * options.generate.steps * len(images) / t + log.info({ 'hypernetwork preview created': model, 'image': fn, 'images': len(images), 'grid': [image.width, image.height], 'time': round(t, 2), 'its': round(its, 2) }) + + +async def embedding(params): + opt = await get('/sdapi/v1/options') + folder = opt['embeddings_dir'] + if not os.path.exists(folder): + log.error({ 'embeddings directory not found': folder }) + return + models = [os.path.splitext(f)[0] for f in Path(folder).glob('**/*.pt')] + log.info({ 'embeddings': len(models) }) + for model in models: + if preview_exists(folder, model) and len(params.input) == 0: # if model preview exists and not manually included + log.info({ 'embedding preview exists': model }) + continue + fn = os.path.join(folder, model + '.preview' + options.format) + images = [] + labels = [] + t0 = time.time() + keyword = '\"' + re.sub(r'\d', '', model) + '\"' + options.generate.batch_size = 4 + options.generate.prompt = options.prompt.replace('', keyword) + options.generate.prompt = options.generate.prompt.replace('', '') + log.info({ 'embedding generating': model, 'keyword': keyword, 'prompt': options.generate.prompt }) + data = await generate(options = options, quiet=True) + if 'image' in data: + for img in data['image']: + images.append(img) + labels.append(keyword) + else: + log.error({ 'embeding': model, 'keyword': keyword, 'error': data }) + t1 = time.time() + if len(images) == 0: + log.error({ 'model': model, 'error': 'no images generated' }) + continue + image = grid(images = images, labels = labels, border = 8) + log.info({ 'saving preview': fn, 'images': len(images), 'size': [image.width, image.height] }) + image.save(fn) + t = t1 - t0 + its = 1.0 * options.generate.steps * len(images) / t + log.info({ 'embeding preview created': model, 'image': fn, 'images': len(images), 'grid': [image.width, image.height], 'time': round(t, 2), 'its': round(its, 2) }) + + +async def create_previews(params): + await preview_models(params) + await lora(params) + await lyco(params) + await hypernetwork(params) + await embedding(params) + await close() + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description = 'generate model previews') + parser.add_argument('--model', default='best/icbinp-icantbelieveIts-final.safetensors [73f48afbdc]', help="model used to create extra network previews") + parser.add_argument('--exclude', default=['sd-v20', 'sd-v21', 'inpainting', 'pix2pix'], help="exclude models with keywords") + parser.add_argument('--debug', default = False, action='store_true', help = 'print extra debug information') + parser.add_argument('input', type = str, nargs = '*') + args = parser.parse_args() + if args.debug: + log.setLevel(logging.DEBUG) + log.debug({ 'debug': True }) + log.debug({ 'args': args.__dict__ }) + asyncio.run(create_previews(args)) diff --git a/cli/download.py b/cli/download.py new file mode 100644 index 0000000000000000000000000000000000000000..c7a34d4b3e04ede9067ca4b44e2c0d383f3380e4 --- /dev/null +++ b/cli/download.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python +import os +import time +import argparse +import tempfile +import urllib +import requests +import urllib3 +import rich.progress as p +from rich import print # pylint: disable=redefined-builtin + + +pbar = p.Progress(p.TextColumn('[cyan]{task.description}'), p.DownloadColumn(), p.BarColumn(), p.TaskProgressColumn(), p.TimeRemainingColumn(), p.TimeElapsedColumn(), p.TransferSpeedColumn()) +headers = { + 'Content-type': 'application/json', + 'User-Agent': 'Mozilla/5.0', +} + + +def get_filename(args, res): + content_fn = (res.headers.get('content-disposition', '').split('filename=')[1]).strip().strip('\"') if 'filename=' in res.headers.get('content-disposition', '') else None + return args.file or content_fn or next(tempfile._get_candidate_names()) # pylint: disable=protected-access + + +def download_requests(args): + res = requests.get(args.url, timeout=30, headers=headers, verify=False, allow_redirects=True, stream=True) + content_length = int(res.headers.get('content-length', 0)) + fn = get_filename(args, res) + print(f'downloading: url={args.url} file={fn} size={content_length if content_length > 0 else "unknown"} lib=requests block={args.block}') + with open(fn, 'wb') as f: + with pbar: + task = pbar.add_task(description="Download starting", total=content_length) + for data in res.iter_content(args.block): + f.write(data) + pbar.update(task, advance=args.block, description="Downloading") + return fn + + +def download_urllib(args): + fn = '' + req = urllib.request.Request(args.url, headers=headers) + res = urllib.request.urlopen(req) + res.getheader('content-length') + content_length = int(res.getheader('content-length') or 0) + fn = get_filename(args, res) + print(f'downloading: url={args.url} file={fn} size={content_length if content_length > 0 else "unknown"} lib=urllib block={args.block}') + with open(fn, 'wb') as f: + with pbar: + task = pbar.add_task(description="Download starting", total=content_length) + while True: + buf = res.read(args.block) + if not buf: + break + f.write(buf) + pbar.update(task, advance=args.block, description="Downloading") + return fn + + +def download_urllib3(args): + http_pool = urllib3.PoolManager() + res = http_pool.request('GET', args.url, preload_content=False, headers=headers) + fn = get_filename(args, res) + content_length = int(res.headers.get('content-length', 0)) + print(f'downloading: url={args.url} file={fn} size={content_length if content_length > 0 else "unknown"} lib=urllib3 block={args.block}') + with open(fn, 'wb') as f: + with pbar: + task = pbar.add_task(description="Download starting", total=content_length) + while True: + buf = res.read(args.block) + if not buf: + break + f.write(buf) + pbar.update(task, advance=args.block, description="Downloading") + return fn + + +def download_httpx(args): + try: + import httpx + except ImportError: + print('httpx is not installed') + return None + with httpx.stream("GET", args.url, headers=headers, verify=False, follow_redirects=True) as res: + fn = get_filename(args, res) + content_length = int(res.headers.get('content-length', 0)) + print(f'downloading: url={args.url} file={fn} size={content_length if content_length > 0 else "unknown"} lib=httpx block=internal') + with open(fn, 'wb') as f: + with pbar: + task = pbar.add_task(description="Download starting", total=content_length) + for buf in res.iter_bytes(): + f.write(buf) + pbar.update(task, advance=args.block, description="Downloading") + return fn + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description = 'downloader') + parser.add_argument('--url', required=True, help="download url, required") + parser.add_argument('--file', required=False, help="output file, default: autodetect") + parser.add_argument('--lib', required=False, default='requests', choices=['urllib', 'urllib3', 'requests', 'httpx'], help="download mode, default: %(default)s") + parser.add_argument('--block', required=False, type=int, default=16384, help="download block size, default: %(default)s") + parsed = parser.parse_args() + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + try: + t0 = time.time() + if parsed.lib == 'requests': + filename = download_requests(parsed) + elif parsed.lib == 'urllib': + filename = download_urllib(parsed) + elif parsed.lib == 'urllib3': + filename = download_urllib3(parsed) + elif parsed.lib == 'httpx': + filename = download_httpx(parsed) + else: + print(f'unknown download library: {parsed.lib}') + exit(1) + t1 = time.time() + if filename is None: + print(f'download error: args={parsed}') + exit(1) + speed = round(os.path.getsize(filename) / (t1 - t0) / 1024 / 1024, 3) + print(f'download complete: url={parsed.url} file={filename} speed={speed} mb/s') + except KeyboardInterrupt: + print(f'download cancelled: args={parsed}') + except Exception as e: + print(f'download error: args={parsed} {e}') diff --git a/cli/gen-styles.py b/cli/gen-styles.py new file mode 100644 index 0000000000000000000000000000000000000000..ec1f1089f28c4b32d638cca6ee06c47585c3f9d7 --- /dev/null +++ b/cli/gen-styles.py @@ -0,0 +1,79 @@ +#!/bin/env python + +import io +import json +import base64 +import argparse +import requests +from PIL import Image + + +options = { + "negative_prompt": "", + "steps": 20, + "batch_size": 1, + "n_iter": 1, + "seed": -1, + "sampler_name": "UniPC", + "cfg_scale": 6, + "width": 512, + "height": 512, + "save_images": False, + "send_images": True, +} +styles = [] + + +def pil_to_b64(img: Image, size: int, quality: int): + img = img.convert('RGB') + img = img.resize((size, size)) + buffer = io.BytesIO() + img.save(buffer, format="JPEG", quality=quality) + b64encoded = base64.b64encode(buffer.getvalue()).decode("utf-8") + return f'data:image/jpeg;base64,{b64encoded}' + + +def post(endpoint: str, dct: dict = None): + req = requests.post(endpoint, json = dct, timeout=300, verify=False) + if req.status_code != 200: + return { 'error': req.status_code, 'reason': req.reason, 'url': req.url } + else: + return req.json() + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description = 'gen-styles.py') + parser.add_argument('--input', type=str, required=True, help="input text file with one line per prompt") + parser.add_argument('--output', type=str, required=True, help="output json file") + parser.add_argument('--nopreviews', default=False, action='store_true', help = 'generate previews') + parser.add_argument('--prompt', type=str, required=False, default='girl walking in a city', help="applied prompt when generating previews") + parser.add_argument('--size', type=int, default=128, help="image size for previews") + parser.add_argument('--quality', type=int, default=35, help="image quality for previews") + parser.add_argument('--url', type=str, required=False, default='http://127.0.0.1:7860', help="sd.next server url") + args = parser.parse_args() + with open(args.input, encoding='utf-8') as f: + lines = f.readlines() + for line in lines: + line = line.strip().replace('\n', '') + if len(line) == 0: + continue + print(f'processing: {line}') + if not args.nopreviews: + options['prompt'] = f'{line} {args.prompt}' + data = post(f'{args.url}/sdapi/v1/txt2img', options) + if 'error' in data: + print(f'error: {data}') + continue + b64str = data['images'][0].split(',',1)[0] + image = Image.open(io.BytesIO(base64.b64decode(b64str))) + else: + image = None + styles.append({ + 'name': line, + 'prompt': line + ' {prompt}', + 'negative': '', + 'extra': '', + 'preview': pil_to_b64(image, args.size, args.quality) if image is not None else '', + }) + with open(args.output, 'w', encoding='utf-8') as outfile: + json.dump(styles, outfile, indent=2) diff --git a/cli/generate.json b/cli/generate.json new file mode 100644 index 0000000000000000000000000000000000000000..0bbcb1439bd2d5bfe7ca8170974ce4a3298d4ff5 --- /dev/null +++ b/cli/generate.json @@ -0,0 +1,38 @@ +{ + "paths": + { + "root": "/mnt/c/Users/mandi/OneDrive/Generative/Generate", + "generate": "image", + "upscale": "upscale", + "grid": "grid" + }, + "generate": + { + "restore_faces": true, + "prompt": "dynamic", + "negative_prompt": "foggy, blurry, blurred, duplicate, ugly, mutilated, mutation, mutated, out of frame, bad anatomy, disfigured, deformed, censored, low res, watermark, text, poorly drawn face, signature", + "steps": 30, + "batch_size": 2, + "n_iter": 1, + "seed": -1, + "sampler_name": "DPM2 Karras", + "cfg_scale": 6, + "width": 512, + "height": 512 + }, + "upscale": + { + "upscaler_1": "SwinIR_4x", + "upscaler_2": "None", + "upscale_first": false, + "upscaling_resize": 0, + "gfpgan_visibility": 0, + "codeformer_visibility": 0, + "codeformer_weight": 0.5 + }, + "options": + { + "sd_model_checkpoint": "sd-v15-runwayml", + "sd_vae": "vae-ft-mse-840000-ema-pruned.ckpt" + } +} diff --git a/cli/generate.py b/cli/generate.py new file mode 100644 index 0000000000000000000000000000000000000000..b8d5cac66fae56d1010476dbfb7c031f53db59df --- /dev/null +++ b/cli/generate.py @@ -0,0 +1,373 @@ +#!/usr/bin/env python +# pylint: disable=no-member +"""generate batches of images from prompts and upscale them + +params: run with `--help` + +default workflow runs infinite loop and prints stats when interrupted: +1. choose random scheduler lookup all available and pick one +2. generate dynamic prompt based on styles, embeddings, places, artists, suffixes +3. beautify prompt +4. generate 3x3 images +5. create image grid +6. upscale images with face restoration +""" + +import argparse +import asyncio +import base64 +import io +import json +import logging +import math +import os +import pathlib +import secrets +import time +import sys +import importlib + +from random import randrange +from PIL import Image +from PIL.ExifTags import TAGS +from PIL.TiffImagePlugin import ImageFileDirectory_v2 + +from sdapi import close, get, interrupt, post, session +from util import Map, log, safestring + + +sd = {} +random = {} +stats = Map({ 'images': 0, 'wall': 0, 'generate': 0, 'upscale': 0 }) +avg = {} + + +def grid(data): + if len(data.image) > 1: + w, h = data.image[0].size + rows = round(math.sqrt(len(data.image))) + cols = math.ceil(len(data.image) / rows) + image = Image.new('RGB', size = (cols * w, rows * h), color = 'black') + for i, img in enumerate(data.image): + image.paste(img, box=(i % cols * w, i // cols * h)) + short = data.info.prompt[:min(len(data.info.prompt), 96)] # limit prompt part of filename to 96 chars + name = '{seed:0>9} {short}'.format(short = short, seed = data.info.all_seeds[0]) # pylint: disable=consider-using-f-string + name = safestring(name) + '.jpg' + f = os.path.join(sd.paths.root, sd.paths.grid, name) + log.info({ 'grid': { 'name': f, 'size': image.size, 'images': len(data.image) } }) + image.save(f, 'JPEG', exif = exif(data.info, None, 'grid'), optimize = True, quality = 70) + return image + return data.image + + +def exif(info, i = None, op = 'generate'): + seed = [info.all_seeds[i]] if len(info.all_seeds) > 0 and i is not None else info.all_seeds # always returns list + seed = ', '.join([str(x) for x in seed]) # int list to str list to single str + template = '{prompt} | negative {negative_prompt} | seed {s} | steps {steps} | cfgscale {cfg_scale} | sampler {sampler_name} | batch {batch_size} | timestamp {job_timestamp} | model {model} | vae {vae}'.format(s = seed, model = sd.options['sd_model_checkpoint'], vae = sd.options['sd_vae'], **info) # pylint: disable=consider-using-f-string + if op == 'upscale': + template += ' | faces gfpgan' if sd.upscale.gfpgan_visibility > 0 else '' + template += ' | faces codeformer' if sd.upscale.codeformer_visibility > 0 else '' + template += ' | upscale {resize}x {upscaler}'.format(resize = sd.upscale.upscaling_resize, upscaler = sd.upscale.upscaler_1) if sd.upscale.upscaler_1 != 'None' else '' # pylint: disable=consider-using-f-string + template += ' | upscale {resize}x {upscaler}'.format(resize = sd.upscale.upscaling_resize, upscaler = sd.upscale.upscaler_2) if sd.upscale.upscaler_2 != 'None' else '' # pylint: disable=consider-using-f-string + if op == 'grid': + template += ' | grid {num}'.format(num = sd.generate.batch_size * sd.generate.n_iter) # pylint: disable=consider-using-f-string + ifd = ImageFileDirectory_v2() + exif_stream = io.BytesIO() + _TAGS = {v: k for k, v in TAGS.items()} # enumerate possible exif tags + ifd[_TAGS['ImageDescription']] = template + ifd.save(exif_stream) + val = b'Exif\x00\x00' + exif_stream.getvalue() + return val + + +def randomize(lst): + if len(lst) > 0: + return secrets.choice(lst) + else: + return '' + + +def prompt(params): # generate dynamic prompt or use one if provided + sd.generate.prompt = params.prompt if params.prompt != 'dynamic' else randomize(random.prompts) + sd.generate.negative_prompt = params.negative if params.negative != 'dynamic' else randomize(random.negative) + embedding = params.embedding if params.embedding != 'random' else randomize(random.embeddings) + sd.generate.prompt = sd.generate.prompt.replace('', embedding) + artist = params.artist if params.artist != 'random' else randomize(random.artists) + sd.generate.prompt = sd.generate.prompt.replace('', artist) + style = params.style if params.style != 'random' else randomize(random.styles) + sd.generate.prompt = sd.generate.prompt.replace(' + + +
+

SD WebUI Benchmark Data

+
+ Benchmark data is created using | SD WebUI Extension System Info +
+ Last modified | + (page is updated automatically hourly if new data is found) | STATUS +
Download + | DATA + | RAW +
+
Note | Performance is measured as iterations per second for different batch sizes (1, 2, 4, 8 ...) and using standardized txt2img settings
+
+
+
+
+ + + diff --git a/extensions-builtin/sd-extension-system-info/pages/favicon.ico b/extensions-builtin/sd-extension-system-info/pages/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1cbc04490dd7488fa515a98e243c113ac220d2f6 Binary files /dev/null and b/extensions-builtin/sd-extension-system-info/pages/favicon.ico differ diff --git a/extensions-builtin/sd-extension-system-info/pages/favicon.png b/extensions-builtin/sd-extension-system-info/pages/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d6ca1c1d45dd28d3315dcdb2a7b412f1dbb17fc5 Binary files /dev/null and b/extensions-builtin/sd-extension-system-info/pages/favicon.png differ diff --git a/extensions-builtin/sd-extension-system-info/pages/manifest.webmanifest b/extensions-builtin/sd-extension-system-info/pages/manifest.webmanifest new file mode 100644 index 0000000000000000000000000000000000000000..4b04f5a0651be556d7a8cbab7ccd86cad943b89f --- /dev/null +++ b/extensions-builtin/sd-extension-system-info/pages/manifest.webmanifest @@ -0,0 +1,10 @@ +{ + "name": "SD WebUI Benchmark Data", + "short_name": "Benchmark", + "icons": [{ "src": "favicon.png", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" }], + "start_url": "./benchmark.html", + "scope": "/", + "display": "standalone", + "background_color": "#000000", + "theme_color": "#000000" +} diff --git a/extensions-builtin/sd-extension-system-info/pages/package.json b/extensions-builtin/sd-extension-system-info/pages/package.json new file mode 100644 index 0000000000000000000000000000000000000000..85cc65ad2cff9d4511adb88e6d36da7d8ba4774d --- /dev/null +++ b/extensions-builtin/sd-extension-system-info/pages/package.json @@ -0,0 +1,34 @@ +{ + "name": "sd-extensions-system-info", + "version": "0.0.1", + "description": "", + "main": "benchmark-download.js", + "scripts": { + "start": "node benchmark-download.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vladmandic/sd-extension-system-info.git" + }, + "bugs": { + "url": "https://github.com/vladmandic/sd-extension-system-info/issues" + }, + "engines": { + "node": ">=18.0.0" + }, + "keywords": [], + "author": "Vladimir Mandic ", + "license": "MIT", + "devDependencies": { + "@types/node": "^18.14.0", + "eslint": "^8.34.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-plugin-html": "^7.1.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-json": "^3.1.0", + "eslint-plugin-node": "^11.1.0" + }, + "dependencies": { + "@actions/core": "^1.10.0" + } +} diff --git a/extensions-builtin/sd-extension-system-info/pages/roboto.ttf b/extensions-builtin/sd-extension-system-info/pages/roboto.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a97385dfddd8dbcf227c075b37737b991796880a Binary files /dev/null and b/extensions-builtin/sd-extension-system-info/pages/roboto.ttf differ diff --git a/extensions-builtin/sd-extension-system-info/preload.py b/extensions-builtin/sd-extension-system-info/preload.py new file mode 100644 index 0000000000000000000000000000000000000000..b37effc27202565a770ccd7166fb11b026e5cbf6 --- /dev/null +++ b/extensions-builtin/sd-extension-system-info/preload.py @@ -0,0 +1,2 @@ +def preload(parser): + pass diff --git a/extensions-builtin/sd-extension-system-info/scripts/system-info.py b/extensions-builtin/sd-extension-system-info/scripts/system-info.py new file mode 100644 index 0000000000000000000000000000000000000000..4a294e4eff19d756a3905edd8d0d96b5bbdaf941 --- /dev/null +++ b/extensions-builtin/sd-extension-system-info/scripts/system-info.py @@ -0,0 +1,730 @@ +import os +import sys +import time +import json +import platform +import subprocess +import datetime +import logging +from html.parser import HTMLParser +import torch +import gradio as gr +from modules import paths, script_callbacks, sd_models, sd_samplers, shared, extensions, devices +from benchmark import run_benchmark, submit_benchmark # pylint: disable=E0401,E0611,C0411 + + +### system info globals + +log = logging.getLogger('sd') +data = { + 'date': '', + 'timestamp': '', + 'uptime': '', + 'version': {}, + 'torch': '', + 'gpu': {}, + 'state': {}, + 'memory': {}, + 'optimizations': [], + 'libs': {}, + 'repos': {}, + 'device': {}, + 'schedulers': [], + 'extensions': [], + 'platform': '', + 'crossattention': '', + 'backend': getattr(devices, 'backend', ''), + 'pipeline': shared.opts.data.get('sd_backend', ''), + 'model': {}, +} +networks = { + 'models': [], + 'hypernetworks': [], + 'embeddings': [], + 'skipped': [], + 'loras': [], + 'lycos': [], +} + +### benchmark globals + +bench_text = '' +bench_file = os.path.join(os.path.dirname(__file__), 'benchmark-data-local.json') +bench_headers = ['timestamp', 'performance', 'version', 'system', 'libraries', 'gpu', 'pipeline', 'model', 'username', 'note', 'hash'] +bench_data = [] + +### system info module + +def get_user(): + user = '' + if user == '': + try: + user = os.getlogin() + except Exception: + pass + if user == '': + try: + import pwd + user = pwd.getpwuid(os.getuid())[0] + except Exception: + pass + return user + + +def get_gpu(): + if not torch.cuda.is_available(): + try: + if shared.cmd_opts.use_openvino: + from modules.intel.openvino import get_openvino_device + return { + 'device': get_openvino_device(), + 'openvino': get_package_version("openvino") + } + else: + return {} + except Exception: + return {} + else: + try: + if hasattr(torch, "xpu") and torch.xpu.is_available(): + return { + 'device': f'{torch.xpu.get_device_name(torch.xpu.current_device())} ({str(torch.xpu.device_count())})', + 'ipex': get_package_version('intel-extension-for-pytorch'), + } + elif torch.version.cuda: + return { + 'device': f'{torch.cuda.get_device_name(torch.cuda.current_device())} ({str(torch.cuda.device_count())}) ({torch.cuda.get_arch_list()[-1]}) {str(torch.cuda.get_device_capability(shared.device))}', + 'cuda': torch.version.cuda, + 'cudnn': torch.backends.cudnn.version(), + 'driver': get_driver(), + } + elif torch.version.hip: + return { + 'device': f'{torch.cuda.get_device_name(torch.cuda.current_device())} ({str(torch.cuda.device_count())})', + 'hip': torch.version.hip, + } + else: + return { + 'device': 'unknown' + } + except Exception as e: + return { 'error': e } + + +def get_driver(): + if torch.cuda.is_available() and torch.version.cuda: + try: + result = subprocess.run('nvidia-smi --query-gpu=driver_version --format=csv,noheader', shell=True, check=False, env=os.environ, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + version = result.stdout.decode(encoding="utf8", errors="ignore").strip() + return version + except Exception: + return '' + else: + return '' + + +def get_uptime(): + s = vars(shared.state) + return time.strftime('%c', time.localtime(s.get('server_start', time.time()))) + + +class HTMLFilter(HTMLParser): + text = "" + def handle_data(self, data): # pylint: disable=redefined-outer-name + self.text += data + + +def get_state(): + s = vars(shared.state) + flags = 'skipped ' if s.get('skipped', False) else '' + flags += 'interrupted ' if s.get('interrupted', False) else '' + flags += 'needs restart' if s.get('need_restart', False) else '' + text = s.get('textinfo', '') + if text is not None and len(text) > 0: + f = HTMLFilter() + f.feed(text) + text = os.linesep.join([s for s in f.text.splitlines() if s]) + return { + 'started': time.strftime('%c', time.localtime(s.get('time_start', time.time()))), + 'step': f'{s.get("sampling_step", 0)} / {s.get("sampling_steps", 0)}', + 'jobs': f'{s.get("job_no", 0)} / {s.get("job_count", 0)}', # pylint: disable=consider-using-f-string + 'flags': flags, + 'job': s.get('job', ''), + 'text-info': text, + } + + +def get_memory(): + def gb(val: float): + return round(val / 1024 / 1024 / 1024, 2) + mem = {} + try: + import psutil + process = psutil.Process(os.getpid()) + res = process.memory_info() + ram_total = 100 * res.rss / process.memory_percent() + ram = { 'free': gb(ram_total - res.rss), 'used': gb(res.rss), 'total': gb(ram_total) } + mem.update({ 'ram': ram }) + except Exception as e: + mem.update({ 'ram': e }) + if torch.cuda.is_available(): + try: + s = torch.cuda.mem_get_info() + gpu = { 'free': gb(s[0]), 'used': gb(s[1] - s[0]), 'total': gb(s[1]) } + s = dict(torch.cuda.memory_stats(shared.device)) + allocated = { 'current': gb(s['allocated_bytes.all.current']), 'peak': gb(s['allocated_bytes.all.peak']) } + reserved = { 'current': gb(s['reserved_bytes.all.current']), 'peak': gb(s['reserved_bytes.all.peak']) } + active = { 'current': gb(s['active_bytes.all.current']), 'peak': gb(s['active_bytes.all.peak']) } + inactive = { 'current': gb(s['inactive_split_bytes.all.current']), 'peak': gb(s['inactive_split_bytes.all.peak']) } + warnings = { 'retries': s['num_alloc_retries'], 'oom': s['num_ooms'] } + mem.update({ + 'gpu': gpu, + 'gpu-active': active, + 'gpu-allocated': allocated, + 'gpu-reserved': reserved, + 'gpu-inactive': inactive, + 'events': warnings, + 'utilization': 0, + }) + mem.update({ 'utilization': torch.cuda.utilization() }) # do this one separately as it may fail + except Exception: + pass + else: + try: + from openvino.runtime import Core as OpenVINO_Core + from modules.intel.openvino import get_device as get_raw_openvino_device + openvino_core = OpenVINO_Core() + mem.update({ + 'gpu': { 'total': gb(openvino_core.get_property(get_raw_openvino_device(), 'GPU_DEVICE_TOTAL_MEM_SIZE')) }, + }) + except Exception: + pass + return mem + + +def get_optimizations(): + ram = [] + if getattr(shared.cmd_opts, 'medvram', False): + ram.append('medvram') + if getattr(shared.cmd_opts, 'medvram_sdxl', False): + ram.append('medvram-sdxl') + if getattr(shared.cmd_opts, 'lowvram', False): + ram.append('lowvram') + if getattr(shared.cmd_opts, 'lowvam', False): + ram.append('lowram') + if len(ram) == 0: + ram.append('none') + return ram + + +def get_package_version(pkg: str): + import pkg_resources + spec = pkg_resources.working_set.by_key.get(pkg, None) # more reliable than importlib + version = pkg_resources.get_distribution(pkg).version if spec is not None else '' + return version + + +def get_libs(): + return { + 'xformers': get_package_version('xformers'), + 'diffusers': get_package_version('diffusers'), + 'transformers': get_package_version('transformers'), + } + + +def get_repos(): + repos = {} + for key, val in paths.paths.items(): + try: + cmd = f'git -C {val} log --pretty=format:"%h %ad" -1 --date=short' + res = subprocess.run(f'{cmd} {val}', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True, check=True) + stdout = res.stdout.decode(encoding = 'utf8', errors='ignore') if len(res.stdout) > 0 else '' + words = stdout.split(' ') + repos[key] = f'[{words[0]}] {words[1]}' + except Exception: + repos[key] = '(unknown)' + return repos + + +def get_platform(): + try: + if platform.system() == 'Windows': + release = platform.platform(aliased = True, terse = False) + else: + release = platform.release() + return { + # 'host': platform.node(), + 'arch': platform.machine(), + 'cpu': platform.processor(), + 'system': platform.system(), + 'release': release, + # 'platform': platform.platform(aliased = True, terse = False), + # 'version': platform.version(), + 'python': platform.python_version(), + } + except Exception as e: + return { 'error': e } + + +def get_torch(): + try: + ver = torch.__long_version__ + except Exception: + ver = torch.__version__ + return f"{ver} {shared.cmd_opts.precision} {' nohalf' if shared.cmd_opts.no_half else ' half'}" + + +def get_version(): + version = {} + try: + res = subprocess.run('git log --pretty=format:"%h %ad" -1 --date=short', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True, check=True) + ver = res.stdout.decode(encoding = 'utf8', errors='ignore') if len(res.stdout) > 0 else '' + githash, updated = ver.split(' ') + res = subprocess.run('git remote get-url origin', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True, check=True) + origin = res.stdout.decode(encoding = 'utf8', errors='ignore') if len(res.stdout) > 0 else '' + res = subprocess.run('git rev-parse --abbrev-ref HEAD', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True, check=True) + branch = res.stdout.decode(encoding = 'utf8', errors='ignore') if len(res.stdout) > 0 else '' + url = origin.replace('\n', '') + '/tree/' + branch.replace('\n', '') + app = origin.replace('\n', '').split('/')[-1] + if app == 'automatic': + app = 'SD.next' + version = { + 'app': app, + 'updated': updated, + 'hash': githash, + 'url': url + } + except Exception: + pass + return version + + +def get_crossattention(): + try: + ca = getattr(shared.opts, 'cross_attention_optimization', None) + if ca is None: + from modules import sd_hijack + ca = sd_hijack.model_hijack.optimization_method + return ca + except Exception: + return 'unknown' + + +def get_model(): + from modules.sd_models import model_data + import modules.sd_vae + obj = { + 'configured': { + 'base': shared.opts.data.get('sd_model_checkpoint', ''), + 'refiner': shared.opts.data.get('sd_model_refiner', ''), + 'vae': shared.opts.data.get('sd_vae', ''), + }, + 'loaded': { + 'base': '', + 'refiner': '', + 'vae': '', + } + } + try: + obj['loaded']['base'] = model_data.sd_model.sd_checkpoint_info.filename if model_data.sd_model is not None and hasattr(model_data.sd_model, 'sd_checkpoint_info') else '' + except Exception : + pass + try: + obj['loaded']['refiner'] = model_data.sd_refiner.sd_checkpoint_info.filename if model_data.sd_refiner is not None and hasattr(model_data.sd_refiner, 'sd_checkpoint_info') else '' + except Exception : + pass + try: + obj['loaded']['vae'] = modules.sd_vae.loaded_vae_file + except Exception: + pass + return obj + + +def get_models(): + return sorted([x.title for x in sd_models.checkpoints_list.values()]) + + +def get_samplers(): + return sorted([sampler[0] for sampler in sd_samplers.all_samplers]) + + +def get_extensions(): + return sorted([f"{e.name} ({'enabled' if e.enabled else 'disabled'}{' builtin' if e.is_builtin else ''})" for e in extensions.extensions]) + + +def get_loras(): + loras = [] + try: + sys.path.append(extensions.extensions_builtin_dir) + from Lora import lora # pylint: disable=E0401 + loras = sorted([l for l in lora.available_loras.keys()]) + except Exception: + pass + return loras + + +def get_device(): + dev = { + 'active': str(devices.device), + 'dtype': str(devices.dtype), + 'vae': str(devices.dtype_vae), + 'unet': str(devices.dtype_unet), + } + return dev + + +def get_full_data(): + global data # pylint: disable=global-statement + data = { + 'date': datetime.datetime.now().strftime('%c'), + 'timestamp': datetime.datetime.now().strftime('%X'), + 'uptime': get_uptime(), + 'version': get_version(), + 'torch': get_torch(), + 'gpu': get_gpu(), + 'state': get_state(), + 'memory': get_memory(), + 'optimizations': get_optimizations(), + 'libs': get_libs(), + 'repos': get_repos(), + 'device': get_device(), + 'model': get_model(), + 'schedulers': get_samplers(), + 'extensions': get_extensions(), + 'platform': get_platform(), + 'crossattention': get_crossattention(), + 'backend': getattr(devices, 'backend', ''), + 'pipeline': shared.opts.data.get('sd_backend', ''), + } + global networks # pylint: disable=global-statement + networks = { + 'models': get_models(), + 'loras': get_loras(), + } + return data + + +def get_quick_data(): + data['timestamp'] = datetime.datetime.now().strftime('%X') + data['state'] = get_state() + data['memory'] = get_memory() + data['model'] = get_model() + + +def list2text(lst: list): + return '\n'.join(lst) + + +def dict2str(d: dict): + arr = [f'{name}:{d[name]}' for i, name in enumerate(d)] + return ' '.join(arr) + + +def dict2text(d: dict): + arr = ['{name}: {val}'.format(name = name, val = d[name] if not type(d[name]) is dict else dict2str(d[name])) for i, name in enumerate(d)] # pylint: disable=consider-using-f-string + return list2text(arr) + + +def refresh_info_quick(_old_data = None): + get_quick_data() + return dict2text(data['state']), dict2text(data['memory']), data['crossattention'], data['timestamp'], data + + +def refresh_info_full(): + get_full_data() + return data['uptime'], dict2text(data['version']), dict2text(data['state']), dict2text(data['memory']), dict2text(data['platform']), data['torch'], dict2text(data['gpu']), list2text(data['optimizations']), data['crossattention'], data['backend'], data['pipeline'], dict2text(data['libs']), dict2text(data['repos']), dict2text(data['device']), dict2text(data['model']), networks['models'], networks['loras'], data['timestamp'], data + + +### ui definition + +def create_ui(blocks: gr.Blocks = None): + try: + if shared.cmd_opts.api_only: + return + except: + pass + if not standalone: + from modules.ui import ui_system_tabs # pylint: disable=redefined-outer-name + else: + ui_system_tabs = None + + with gr.Blocks(analytics_enabled = False) if standalone else blocks as system_info: + with gr.Row(elem_id = 'system_info'): + with gr.Tabs(elem_id = 'system_info_tabs') if standalone else ui_system_tabs: + with gr.TabItem('System Info'): + with gr.Row(): + timestamp = gr.Textbox(value=data['timestamp'], label = '', elem_id = 'system_info_tab_last_update', container=False) + refresh_quick_btn = gr.Button('Refresh state', elem_id = 'system_info_tab_refresh_btn', visible = False) # quick refresh is used from js interval + refresh_full_btn = gr.Button('Refresh data', elem_id = 'system_info_tab_refresh_full_btn', variant='primary') + interrupt_btn = gr.Button('Send interrupt', elem_id = 'system_info_tab_interrupt_btn', variant='primary') + with gr.Row(): + with gr.Column(): + uptimetxt = gr.Textbox(data['uptime'], label = 'Server start time', lines = 1) + versiontxt = gr.Textbox(dict2text(data['version']), label = 'Version', lines = len(data['version'])) + with gr.Column(): + statetxt = gr.Textbox(dict2text(data['state']), label = 'State', lines = len(data['state'])) + with gr.Column(): + memorytxt = gr.Textbox(dict2text(data['memory']), label = 'Memory', lines = len(data['memory'])) + with gr.Row(): + with gr.Column(): + platformtxt = gr.Textbox(dict2text(data['platform']), label = 'Platform', lines = len(data['platform'])) + with gr.Row(): + backendtxt = gr.Textbox(data['backend'], label = 'Backend') + pipelinetxt = gr.Textbox(data['pipeline'], label = 'Pipeline') + with gr.Column(): + torchtxt = gr.Textbox(data['torch'], label = 'Torch', lines = 1) + gputxt = gr.Textbox(dict2text(data['gpu']), label = 'GPU', lines = len(data['gpu'])) + with gr.Row(): + opttxt = gr.Textbox(list2text(data['optimizations']), label = 'Memory optimization') + attentiontxt = gr.Textbox(data['crossattention'], label = 'Cross-attention') + with gr.Column(): + libstxt = gr.Textbox(dict2text(data['libs']), label = 'Libs', lines = len(data['libs'])) + repostxt = gr.Textbox(dict2text(data['repos']), label = 'Repos', lines = len(data['repos']), visible = False) + devtxt = gr.Textbox(dict2text(data['device']), label = 'Device Info', lines = len(data['device'])) + modeltxt = gr.Textbox(dict2text(data['model']), label = 'Model Info', lines = len(data['model'])) + with gr.Row(): + gr.HTML('Load
') + gr.HTML('Memory
') + with gr.Accordion('Info object', open = False, visible = True): + # reduce json data to avoid private info + refresh_info_quick() + js = gr.JSON(data) + + with gr.TabItem('Benchmark'): + bench_load() + with gr.Row(): + benchmark_data = gr.DataFrame(bench_data, label = 'Benchmark Data', elem_id = 'system_info_benchmark_data', show_label = True, interactive = False, wrap = True, overflow_row_behaviour = 'paginate', max_rows = 10, headers = bench_headers) + with gr.Row(): + with gr.Column(scale=3): + username = gr.Textbox(get_user, label = 'Username', placeholder='enter username for submission', elem_id='system_info_tab_username') + note = gr.Textbox('', label = 'Note', placeholder='enter any additional notes', elem_id='system_info_tab_note') + with gr.Column(scale=1): + with gr.Row(): + warmup = gr.Checkbox(label = 'Perform warmup', value = True, elem_id = 'system_info_tab_warmup') + extra = gr.Checkbox(label = 'Extra steps', value = False, elem_id = 'system_info_tab_extra') + level = gr.Radio(['quick', 'normal', 'extensive'], value = 'normal', label = 'Benchmark level', elem_id = 'system_info_tab_level') + # batches = gr.Textbox('1, 2, 4, 8', label = 'Batch sizes', elem_id = 'system_info_tab_batch_size', interactive = False) + with gr.Column(scale=1): + bench_run_btn = gr.Button('Run benchmark', elem_id = 'system_info_tab_benchmark_btn', variant='primary') + bench_run_btn.click(bench_init, inputs = [username, note, warmup, level, extra], outputs = [benchmark_data]) + bench_submit_btn = gr.Button('Submit results', elem_id = 'system_info_tab_submit_btn', variant='primary') + bench_submit_btn.click(bench_submit, inputs = [username], outputs = []) + _bench_link = gr.HTML('Link to online results') + with gr.Row(): + _bench_note = gr.HTML(elem_id = 'system_info_tab_bench_note', value = """ + performance is measured in iterations per second (it/s) and reported for different batch sizes (e.g. 1, 2, 4, 8, 16...)
+ running benchmark may take a while. extensive tests may result in gpu out-of-memory conditions.""") + with gr.Row(): + bench_label = gr.HTML('', elem_id = 'system_info_tab_bench_label') + refresh_bench_btn = gr.Button('Refresh bench', elem_id = 'system_info_tab_refresh_bench_btn', visible = False) # quick refresh is used from js interval + refresh_bench_btn.click(bench_refresh, inputs = [], outputs = [bench_label]) + + with gr.TabItem('Models & Networks'): + with gr.Row(): + with gr.Column(): + models = gr.JSON(networks['models'], label = 'Models') + with gr.Column(): + loras = gr.JSON(networks['loras'], label = 'Available LORA') + + refresh_quick_btn.click(refresh_info_quick, _js='receive_system_info', show_progress = False, + inputs = [js], + outputs = [statetxt, memorytxt, attentiontxt, timestamp, js] + ) + refresh_full_btn.click(refresh_info_full, show_progress = False, + inputs = [], + outputs = [uptimetxt, versiontxt, statetxt, memorytxt, platformtxt, torchtxt, gputxt, opttxt, attentiontxt, backendtxt, pipelinetxt, libstxt, repostxt, devtxt, modeltxt, models, loras, timestamp, js] + ) + interrupt_btn.click(shared.state.interrupt, inputs = [], outputs = []) + + return [(system_info, 'System Info', 'system_info')] + + +### benchmarking module + +def bench_submit(username: str): + if username is None or username == '': + log.error('SD-System-Info: username is required to submit results') + return + submit_benchmark(bench_data, username) + log.info(f'SD-System-Info: benchmark data submitted: {len(bench_data)} records') + + +def bench_run(batches: list = [1], extra: bool = False): + results = [] + for batch in batches: + log.debug(f'SD-System-Info: benchmark starting: batch={batch}') + res = run_benchmark(batch, extra) + log.info(f'SD-System-Info: benchmark batch={batch} its={res}') + results.append(str(res)) + its = ' / '.join(results) + return its + + +def bench_init(username: str, note: str, warmup: bool, level: str, extra: bool): + from hashlib import sha256 + + log.debug('SD-System-Info: benchmark starting') + get_full_data() + hash256 = sha256((dict2str(data['platform']) + data['torch'] + dict2str(data['libs']) + dict2str(data['gpu']) + ','.join(data['optimizations']) + data['crossattention']).encode('utf-8')).hexdigest()[:6] + existing = [x for x in bench_data if (x[-1] is not None and x[-1][:6] == hash256)] + if len(existing) > 0: + log.debug('SD-System-Info: benchmark replacing existing entry') + d = existing[0] + elif bench_data[-1][0] is not None: + log.debug('SD-System-Info: benchmark new entry') + bench_data.append([None] * len(bench_headers)) + d = bench_data[-1] + else: + d = bench_data[-1] + + if level == 'quick': + batches = [1] + elif level == 'normal': + batches = [1, 2, 4] + elif level == 'extensive': + batches = [1, 2, 4, 8, 16] + else: + batches = [] + + if warmup: + bench_run([1], False) + + try: + mem = data['memory']['gpu']['total'] + except Exception: + mem = 0 + + # bench_headers = ['timestamp', 'performance', 'version', 'system', 'libraries', 'gpu', 'optimizations', 'model', 'username', 'note', 'hash'] + d[0] = str(datetime.datetime.now()) + d[1] = bench_run(batches, extra) + d[2] = dict2str(data['version']) + d[3] = dict2str(data['platform']) + d[4] = f"torch:{data['torch']} {dict2str(data['libs'])}" + d[5] = dict2str(data['gpu']) + f' {str(round(mem))}GB' + d[6] = (data['pipeline'] + ' ' + data['crossattention'] + ' ' + ','.join(data['optimizations'])).strip() + d[7] = shared.opts.data['sd_model_checkpoint'] + d[8] = username + d[9] = note + d[10] = hash256 + + md = '| ' + ' | '.join(d) + ' |' + log.info(f'SD-System-Info: benchmark result: {md}') + + bench_save() + return bench_data + + +def bench_load(): + global bench_data # pylint: disable=global-statement + tmp = [] + if os.path.isfile(bench_file) and os.path.getsize(bench_file) > 0: + try: + with open(bench_file, 'r', encoding='utf-8') as f: + tmp = json.load(f) + bench_data = tmp + log.debug(f'SD-System-Info: benchmark data loaded: {bench_file}') + except Exception as err: + log.debug(f'SD-System-Info: benchmark error loading: {bench_file} {str(err)}') + if len(bench_data) == 0: + bench_data.append([None] * len(bench_headers)) + return bench_data + + +def bench_save(): + if bench_data[-1][0] is None: + del bench_data[-1] + try: + with open(bench_file, 'w', encoding='utf-8') as f: + json.dump(bench_data, f, indent=2, default=str, skipkeys=True) + log.debug(f'SD-System-Info: benchmark data saved: {bench_file}') + except Exception as err: + log.error(f'SD-System-Info: benchmark error saving: {bench_file} {str(err)}') + + +def bench_refresh(): + return gr.HTML.update(value = bench_text) + + +### API + +from typing import Optional # pylint: disable=wrong-import-order +from fastapi import FastAPI, Depends # pylint: disable=wrong-import-order +from pydantic import BaseModel, Field # pylint: disable=wrong-import-order,no-name-in-module + + +class StatusReq(BaseModel): # definition of http request + state: bool = Field(title="State", description="Get server state", default=False) + memory: bool = Field(title="Memory", description="Get server memory status", default=False) + full: bool = Field(title="FullInfo", description="Get full server info", default=False) + refresh: bool = Field(title="FullInfo", description="Force refresh server info", default=False) + + +class StatusRes(BaseModel): # definition of http response + version: dict = Field(title="Version", description="Server version") + uptime: str = Field(title="Uptime", description="Server uptime") + timestamp: str = Field(title="Timestamp", description="Data timestamp") + state: Optional[dict] = Field(title="State", description="Server state") + memory: Optional[dict] = Field(title="Memory", description="Server memory status") + platform: Optional[dict] = Field(title="Platform", description="Server platform") + torch: Optional[str] = Field(title="Torch", description="Torch version") + gpu: Optional[dict] = Field(title="GPU", description="GPU info") + optimizations: Optional[list] = Field(title="Optimizations", description="Memory optimizations") + crossatention: Optional[str] = Field(title="CrossAttention", description="Cross-attention optimization") + device: Optional[dict] = Field(title="Device", description="Device info") + backend: Optional[str] = Field(title="Backend", description="Backend") + pipeline: Optional[str] = Field(title="Pipeline", description="Pipeline") + + +def get_status_api(req: StatusReq = Depends()): + if req.refresh: + get_full_data() + else: + get_quick_data() + res = StatusRes( + version = data['version'], + timestamp = data['timestamp'], + uptime = data['uptime'] + ) + if req.state or req.full: + res.state = data['state'] + if req.memory or req.full: + res.memory = data['memory'] + if req.full: + res.platform = data['platform'] + res.torch = data['torch'] + res.gpu = data['gpu'] + res.optimizations = data['optimizations'] + res.crossatention = data['crossattention'] + res.device = data['device'] + res.backend = data['backend'] + res.pipeline = data['pipeline'] + return res + + +def register_api(app: FastAPI): + app.add_api_route("/sdapi/v1/system-info/status", get_status_api, methods=["GET"], response_model=StatusRes) + + +### Entry point + +def on_app_started(blocks, app): # register api + register_api(app) + if not standalone: + create_ui(blocks) + """ + @app.get("/sdapi/v1/system-info/status") + async def sysinfo_api(): + get_quick_data() + res = { 'state': data['state'], 'memory': data['memory'], 'timestamp': data['timestamp'] } + return res + """ + +try: + from modules.ui import ui_system_tabs # pylint: disable=unused-import,ungrouped-imports + standalone = False +except: + standalone = True + +if standalone: + script_callbacks.on_ui_tabs(create_ui) +script_callbacks.on_app_started(on_app_started) diff --git a/extensions-builtin/sd-extension-system-info/style.css b/extensions-builtin/sd-extension-system-info/style.css new file mode 100644 index 0000000000000000000000000000000000000000..2ffba6f04bd8aa5a74e8082a96b6c6a587dd488d --- /dev/null +++ b/extensions-builtin/sd-extension-system-info/style.css @@ -0,0 +1 @@ +#system_info_benchmark_data .table-wrap { height: unset; margin-bottom: 2em; } diff --git a/extensions-builtin/sd-extension-system-info/system-info-json.jpg b/extensions-builtin/sd-extension-system-info/system-info-json.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4e5d3b2a4fd5963a58a5e54758284ff251265bcd Binary files /dev/null and b/extensions-builtin/sd-extension-system-info/system-info-json.jpg differ diff --git a/extensions-builtin/sd-extension-system-info/system-info-models.jpg b/extensions-builtin/sd-extension-system-info/system-info-models.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d317005def759e7d5e9e9b63633d5efe7432f61 Binary files /dev/null and b/extensions-builtin/sd-extension-system-info/system-info-models.jpg differ diff --git a/extensions-builtin/sd-extension-system-info/system-info.jpg b/extensions-builtin/sd-extension-system-info/system-info.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14c7213916a87d89f87745df588346bc56773661 Binary files /dev/null and b/extensions-builtin/sd-extension-system-info/system-info.jpg differ diff --git a/extensions-builtin/sd-webui-agent-scheduler/.gitignore b/extensions-builtin/sd-webui-agent-scheduler/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..319c70149b0b5f85155ecf52a9e803bf49629632 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/.gitignore @@ -0,0 +1,39 @@ +__pycache__ +*.ckpt +*.safetensors +*.pth +/ESRGAN/* +/SwinIR/* +/repositories +/venv +/tmp +/model.ckpt +/models/**/* +/GFPGANv1.3.pth +/gfpgan/weights/*.pth +/ui-config.json +/outputs +/config.json +/log +/webui.settings.bat +/embeddings +/styles.csv +/params.txt +/styles.csv.bak +/webui-user.bat +/webui-user.sh +/interrogate +/user.css +/.idea +notification.mp3 +/SwinIR +/textual_inversion +.vscode +/extensions +/test/stdout.txt +/test/stderr.txt +/cache.json +*.sql +*.db +*.sqlite +*.sqlite3 \ No newline at end of file diff --git a/extensions-builtin/sd-webui-agent-scheduler/.prettierrc b/extensions-builtin/sd-webui-agent-scheduler/.prettierrc new file mode 100644 index 0000000000000000000000000000000000000000..aa9c1628f6db96fa419d48494f177ea15d781f5c --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/.prettierrc @@ -0,0 +1,9 @@ +{ + "singleQuote": true, + "jsxSingleQuote": false, + "arrowParens": "avoid", + "trailingComma": "es5", + "semi": true, + "tabWidth": 2, + "printWidth": 100 +} diff --git a/extensions-builtin/sd-webui-agent-scheduler/README.md b/extensions-builtin/sd-webui-agent-scheduler/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9b64b5518ec1d0e9a9d92e3adba0818efdaf6795 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/README.md @@ -0,0 +1,298 @@ +# Agent Scheduler + +Introducing AgentScheduler, an A1111/Vladmandic Stable Diffusion Web UI extension to power up your image generation workflow! + +## Table of Content + +- [Compatibility](#compatibility) +- [Installation](#installation) + - [Using Vlad Fork](#using-vlads-webui-fork) + - [Using the built-in extension list](#using-the-built-in-extension-list) + - [Manual clone](#manual-clone) +- [Functionality](#functionality-as-of-current-version) +- [Settings](#extension-settings) +- [API Access](#api-access) +- [Troubleshooting](#troubleshooting) +- [Road Map](#road-map) +- [Contributing](#contributing) +- [License](#license) +- [Disclaimer](#disclaimer) + +--- + +## Compatibility + +This version of AgentScheduler is compatible with latest versions of: + +- A1111: [commit baf6946](https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/baf6946e06249c5af9851c60171692c44ef633e0) +- Vladmandic: [commit 9726b4d](https://github.com/vladmandic/automatic/commit/9726b4d23cb63779964e1d4edff49dd2c9c11e51) + +> Older versions may not working properly. + +## Installation + +### Using Vlad's WebUI Fork + +The extension is already included in [Vlad fork](https://github.com/vladmandic/automatic)'s builtin extensions. + +### Using the built-in extension list + +1. Open the Extensions tab +2. Open the "Install From URL" sub-tab +3. Paste the repo url: https://github.com/ArtVentureX/sd-webui-agent-scheduler.git +4. Click "Install" + +![Install](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/f0fa740b-392a-4dd6-abe1-49c770ea60da) + +### Manual clone + +```bash +git clone "https://github.com/ArtVentureX/sd-webui-agent-scheduler.git" extensions/agent-scheduler +``` + +(The second argument specifies the name of the folder, you can choose whatever you like). + +## Basic Features + +![Extension Walkthrough 1](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/a5a039a7-d98b-4186-9131-6775f0812c39) + +1️⃣ Input your usual Prompts & Settings. **Enqueue** to send your current prompts, settings, controlnets to **AgentScheduler**. + +![Extension Walkthrough 2](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/734176b4-7ee3-40e5-bb92-35608fabfc4b) + +2️⃣ **AgentScheduler** Extension Tab. + +3️⃣ See all queued tasks, current image being generated and tasks' associated information. **Drag and drop** the handle in the begining of each row to reaggrange the generation order. + +4️⃣ **Pause** to stop queue auto generation. **Resume** to start. + +5️⃣ Press ▶️ to prioritize selected task, or to start a single task when queue is paused. **Delete** tasks that you no longer want. + +![ Extension Walkthrough 3](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/23109761-2633-4b24-bbb3-091628367047) + +6️⃣ Show queue history. + +7️⃣ **Filter** task status or search by text. + +8️⃣ **Bookmark** task to easier filtering. + +9️⃣ Double click the task id to **rename** and quickly update basic parameters. Click ↩️ to **Requeue** old task. + +🔟 Click on each task to **view** the generation results. + +https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/50c74922-b85f-493c-9be8-b8e78f0cd061 + +## Hidden Features: + +#### Queue all checkpoints at the same time + +Right click the `Enqueue` button and select `Queue with all checkpoints` to quickly queue the current setting with all available checkpoints. + +![image](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/c75276e8-6d0c-4f72-91db-817f38a3fea6) + +#### Queue with a subset of checkpoints + +![image](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/b776d09d-c789-47f1-8884-975848bb766d) + +![image](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/bdb2b41a-5ae8-41c1-bece-7dbff67e38b7) + +With the custom checkpoint select enabled (see [Extension Settings](#extension-settings) section below), you can select a folder (or subfolder) to queue task with all checkpoints inside. Eg: Select `anime` will queue `anime\AOM3A1B_oragemixs`, `anime\counterfeit\Counterfeit-V2.5_fp16` and `anime\counterfeit\Counterfeit-V2.5_pruned`. + +#### Edit queued task + +Double click a queued task to edit. You can name a task by changing `task_id` or update some basic parameters: `prompt`, `negative prompt`, `sampler`, `checkpoint`, `steps`, `cfg scale`. + +![image](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/57535174-2f66-4ee7-8f3c-9f1dd3882eff) + +## Extension Settings + +Go to `Settings > Agent Scheduler` to access extension settings. + +![Settings](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/b0377ccd-f9bf-486e-8393-c06fe26aa117) + +**Disable Queue Auto-Processing**: Check this option to disable queue auto-processing on start-up. You can also temporarily pause or resume the queue from the Extension tab. + +**Queue Button Placement**: Change the placement of the queue button on the UI. + +**Hide the Checkpoint Dropdown**: The Extension provides a custom checkpoint dropdown. + +![Custom Checkpoint](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/d110d314-a208-4eec-bb54-9f8c73cb450b) + +By default, queued tasks use the currently loaded checkpoint. However, changing the system checkpoint requires some time to load the checkpoint into memory, and you also cannot change the checkpoint during image generation. You can use this dropdown to quickly queue a task with a custom checkpoint. + +**Auto Delete Queue History**: Select a timeframe to keep your queue history. Tasks that are older than the configured value will be automatically deleted. Please note that bookmarked tasks will not be deleted. + +## API Access + +All the functionality of this extension can be accessed through HTTP APIs. You can access the API documentation via `http://127.0.0.1:7860/docs`. Remember to include `--api` in your startup arguments. + +![API docs](https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/012ab2cc-b41f-4c68-8fa5-7ab4e49aa91d) + +#### Queue Task + +The two apis `/agent-scheduler/v1/queue/txt2img` and `/agent-scheduler/v1/queue/img2img` support all the parameters of the original webui apis. These apis response the task id, which can be used to perform updates later. + +```json +{ + "task_id": "string" +} +``` + +#### Download Results + +Use api `/agent-scheduler/v1/results/{id}` to get the generated images. The api supports two response format: + +- json with base64 encoded + +```json +{ + "success": true, + "data": [ + { + "image": "data:image/png;base64,iVBORw0KGgoAAAAN...", + "infotext": "1girl\nNegative prompt: EasyNegative, badhandv4..." + }, + { + "image": "data:image/png;base64,iVBORw0KGgoAAAAN...", + "infotext": "1girl\nNegative prompt: EasyNegative, badhandv4..." + } + ] +} +``` + +- zip file with querystring `zip=true` + +#### API Callback + +Queue task with param `callback_url` to register an API callback. Eg: + +```json +{ + "prompt": "1girl", + "negative_prompt": "easynegative", + "callback_url": "http://somehost:port/task_completed" +} +``` + +The callback endpoint must support `POST` method with body in `multipart/form-data` encoding. Body format: + +```json +{ + "task_id": "abc123", + "status": "done", + "files": [list of image files], +} +``` + +Example code of the endpoint handle with `FastApi`: + +```python +from fastapi import FastAPI, UploadFile, File, Form + +@app.post("/task_completed") +async def handle_task_completed( + task_id: Annotated[str, Form()], + status: Annotated[str, Form()], + files: Optional[List[UploadFile]] = File(None), +): + print(f"Received {len(files)} files for task {task_id} with status {status}") + for file in files: + print(f"* {file.filename} {file.content_type} {file.size}") + # ... do something with the file contents ... + +# Received 1 files for task 3cf8b150-f260-4489-b6e8-d86ed8a564ca with status done +# * 00008-3322209480.png image/png 416400 +``` + +## Troubleshooting + +Make sure that you are running the latest version of the extension and an updated version of the WebUI. + +- To update the extension, go to `Extension` tab and click `Check for Updates`, then click `Apply and restart UI`. +- To update the WebUI it self, you run the command `git pull origin master` in the same folder as webui.bat (or webui.sh). + +Steps to try to find the cause of issues: + +- Check the for errors in the WebUI output console. +- Press F12 in the browser then go to the console tab and reload the page, find any error message here. + +Common errors: + +**AttributeError: module 'modules.script_callbacks' has no attribute 'on_before_reload'** + +If you see this error message in the output console, try update the WebUI to the latest version. + +**Update**: The extension is updated to print this warning message instead: **YOUR SD WEBUI IS OUTDATED AND AGENT SCHEDULER WILL NOT WORKING PROPERLY.** You can still able to use the extension but it will not working correctly after a reload. + +~~**ReferenceError: submit_enqueue is not defined**~~ + +~~If you click the `Enqueue` button and nothing happen, and you find above error message in the browser F12 console, follow the steps in [this comment](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/4#issuecomment-1575986274).~~ + +Update: This issue is now fixed. + +**TypeError: issubclass() arg 1 must be a class** +Please update the extension, there's a chance it's already fixed. + +**TypeError: Object of type X is not JSON serializable** +Please update the extension, it should be fixed already. If not, please fire an issue report with the list of installed extensions. + +For other errors, feel free to fire a new [Github issue](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/new/choose). + +## Road Map + +To list possible feature upgrades for this extension + +- Connect multiple SD webui nodes to run task. +- Sync with GenAI Management Platform **ArtVenture** + +## Contributing + +We welcome contributions to the Agent Scheduler Extension project! Please feel free to submit issues, bug reports, and feature requests through the GitHub repository. + +Please give us a ⭐ if you find this extension helpful! + +## License + +This project is licensed under the Apache License 2.0. + +## Disclaimer + +The author(s) of this project are not responsible for any damages or legal issues arising from the use of this software. Users are solely responsible for ensuring that they comply with any applicable laws and regulations when using this software and assume all risks associated with its use. The author(s) are not responsible for any copyright violations or legal issues arising from the use of input or output content. + +--- + +## CRAFTED BY THE PEOPLE BUILDING **ARTVENTURE**, [**ATHERLABS**](https://atherlabs.com/) & [**SIPHER ODYSSEY**](http://playsipher.com/) + +### About ArtVenture (coming soon™️) + +ArtVenture offers powerful collaboration features for Generative AI Image workflows. It is designed to help designers and creative professionals of all levels collaborate more efficiently, unleash their creativity, and have full transparency and tracking over the creation process. + +![ArtVenture Teaser](https://user-images.githubusercontent.com/90659883/236376930-831ac345-e979-4ec5-bece-49e4bc497b79.png) + +![ArtVenture Teaser 2](https://user-images.githubusercontent.com/90659883/236376933-babe9d36-f42f-4c1c-b59a-08be572a1f4c.png) + +### Current Features + +ArtVenture offers the following key features: + +- Seamless Access: available on desktop and mobile +- Multiplayer & Collaborative UX. Strong collaboration features, such as real-time commenting and feedback, version control, and image/file/project sharing. +- Powerful semantic search capabilities. +- Building on shoulders of Giants, leveraging A1111/Vladnmandic and other pioneers, provide collaboration process from Idea (Sketch/Thoughts/Business Request) to Final Results(Images/Copywriting Post/TaskCompleted) in 1 platform +- Automation tooling for certain repeated tasks +- Secure and transparent, leveraging hasing and metadata to track the origin and history of models, loras, images to allow for tracability and ease of collaboration. +- Personalize UX for both beginner and experienced users to quickly remix existing SD images by editing prompts and negative prompts, selecting new training models and output quality as desired. + +### Target Audience + +ArtVenture is designed for the following target audiences: + +- Casual Creators +- Small Design Teams or Freelancers +- Design Agencies & Studios + +## 🎉 Stay Tuned for Updates + +We hope you find this extension to be useful. We will be adding new features and improvements over time as we enhance this extension to support our creative workflows. + +To stay up-to-date with the latest news and updates, be sure to follow us on GitHub and Twitter (coming soon™️). We welcome your feedback and suggestions, and are excited to hear how AgentScheduler can help you streamline your workflow and unleash your creativity! diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/api.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/api.py new file mode 100644 index 0000000000000000000000000000000000000000..8c8692a7df3d6f74c5a37674766367c35ff2c8a8 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/api.py @@ -0,0 +1,514 @@ +import io +import os +import json +import base64 +import requests +import threading +from uuid import uuid4 +from zipfile import ZipFile +from pathlib import Path +from secrets import compare_digest +from typing import Optional, Dict, List +from datetime import datetime, timezone +from collections import defaultdict +from gradio.routes import App +from PIL import Image +from fastapi import Depends +from fastapi.responses import StreamingResponse +from fastapi.security import HTTPBasic, HTTPBasicCredentials +from fastapi.exceptions import HTTPException +from pydantic import BaseModel + +from modules import shared, progress, sd_models, sd_samplers + +from .db import Task, TaskStatus, task_manager +from .models import ( + Txt2ImgApiTaskArgs, + Img2ImgApiTaskArgs, + QueueTaskResponse, + QueueStatusResponse, + HistoryResponse, + TaskModel, + UpdateTaskArgs, +) +from .task_runner import TaskRunner +from .helpers import log, request_with_retry +from .task_helpers import encode_image_to_base64, img2img_image_args_by_mode + + +def api_callback(callback_url: str, task_id: str, status: TaskStatus, images: list): + files = [] + for img in images: + img_path = Path(img) + ext = img_path.suffix.lower() + content_type = f"image/{ext[1:]}" + files.append( + ( + "files", + (img_path.name, open(os.path.abspath(img), "rb"), content_type), + ) + ) + + return requests.post( + callback_url, + timeout=5, + data={"task_id": task_id, "status": status.value}, + files=files, + ) + + +def on_task_finished( + task_id: str, + task: Task, + status: TaskStatus = None, + result: dict = None, + **_, +): + # handle api task callback + if not task.api_task_callback: + return + + upload = lambda: api_callback( + task.api_task_callback, + task_id=task_id, + status=status, + images=result["images"], + ) + + request_with_retry(upload) + + +def regsiter_apis(app: App, task_runner: TaskRunner): + api_credentials = {} + deps = None + + def auth(credentials: HTTPBasicCredentials = Depends(HTTPBasic())): + if credentials.username in api_credentials: + if compare_digest(credentials.password, api_credentials[credentials.username]): + return True + + raise HTTPException( + status_code=401, detail="Incorrect username or password", headers={"WWW-Authenticate": "Basic"} + ) + + if shared.cmd_opts.api_auth: + api_credentials = {} + + for cred in shared.cmd_opts.api_auth.split(","): + user, password = cred.split(":") + api_credentials[user] = password + + deps = [Depends(auth)] + + log.info("[AgentScheduler] Registering APIs") + + @app.get("/agent-scheduler/v1/samplers", response_model=List[str]) + def get_samplers(): + return [sampler[0] for sampler in sd_samplers.all_samplers] + + @app.get("/agent-scheduler/v1/sd-models", response_model=List[str]) + def get_sd_models(): + return [x.title for x in sd_models.checkpoints_list.values()] + + @app.post("/agent-scheduler/v1/queue/txt2img", response_model=QueueTaskResponse, dependencies=deps) + def queue_txt2img(body: Txt2ImgApiTaskArgs): + task_id = str(uuid4()) + args = body.dict() + checkpoint = args.pop("checkpoint", None) + vae = args.pop("vae", None) + callback_url = args.pop("callback_url", None) + task = task_runner.register_api_task( + task_id, + api_task_id=None, + is_img2img=False, + args=args, + checkpoint=checkpoint, + vae=vae, + ) + if callback_url: + task.api_task_callback = callback_url + task_manager.update_task(task) + + task_runner.execute_pending_tasks_threading() + + return QueueTaskResponse(task_id=task_id) + + @app.post("/agent-scheduler/v1/queue/img2img", response_model=QueueTaskResponse, dependencies=deps) + def queue_img2img(body: Img2ImgApiTaskArgs): + task_id = str(uuid4()) + args = body.dict() + checkpoint = args.pop("checkpoint", None) + vae = args.pop("vae", None) + callback_url = args.pop("callback_url", None) + task = task_runner.register_api_task( + task_id, + api_task_id=None, + is_img2img=True, + args=args, + checkpoint=checkpoint, + vae=vae, + ) + if callback_url: + task.api_task_callback = callback_url + task_manager.update_task(task) + + task_runner.execute_pending_tasks_threading() + + return QueueTaskResponse(task_id=task_id) + + def format_task_args(task): + task_args = TaskRunner.instance.parse_task_args(task, deserialization=False) + named_args = task_args.named_args + named_args["checkpoint"] = task_args.checkpoint + # remove unused args to reduce payload size + named_args.pop("alwayson_scripts", None) + named_args.pop("script_args", None) + named_args.pop("init_images", None) + for image_args in img2img_image_args_by_mode.values(): + for keys in image_args: + named_args.pop(keys[0], None) + return named_args + + @app.get("/agent-scheduler/v1/queue", response_model=QueueStatusResponse, dependencies=deps) + def queue_status_api(limit: int = 20, offset: int = 0): + current_task_id = progress.current_task + total_pending_tasks = task_manager.count_tasks(status="pending") + pending_tasks = task_manager.get_tasks(status=TaskStatus.PENDING, limit=limit, offset=offset) + position = offset + parsed_tasks = [] + for task in pending_tasks: + params = format_task_args(task) + task_data = task.dict() + task_data["params"] = params + if task.id == current_task_id: + task_data["status"] = "running" + + task_data["position"] = position + parsed_tasks.append(TaskModel(**task_data)) + position += 1 + + return QueueStatusResponse( + current_task_id=current_task_id, + pending_tasks=parsed_tasks, + total_pending_tasks=total_pending_tasks, + paused=TaskRunner.instance.paused, + ) + + @app.get("/agent-scheduler/v1/export") + def export_queue(limit: int = 1000, offset: int = 0): + pending_tasks = task_manager.get_tasks(status=TaskStatus.PENDING, limit=limit, offset=offset) + pending_tasks = [Task.from_table(t).to_json() for t in pending_tasks] + return pending_tasks + + class StringRequestBody(BaseModel): + content: str + + @app.post("/agent-scheduler/v1/import") + def import_queue(queue: StringRequestBody): + try: + objList = json.loads(queue.content) + taskList: List[Task] = [] + for obj in objList: + if "id" not in obj or not obj["id"] or obj["id"] == "": + obj["id"] = str(uuid4()) + obj["result"] = None + obj["status"] = TaskStatus.PENDING + task = Task.from_json(obj) + taskList.append(task) + + for task in taskList: + exists = task_manager.get_task(task.id) + if exists: + task_manager.update_task(task) + else: + task_manager.add_task(task) + return {"success": True, "message": "Queue imported"} + except Exception as e: + print(e) + return {"success": False, "message": "Import Failed"} + + @app.get("/agent-scheduler/v1/history", response_model=HistoryResponse, dependencies=deps) + def history_api(status: str = None, limit: int = 20, offset: int = 0): + bookmarked = True if status == "bookmarked" else None + if not status or status == "all" or bookmarked: + status = [ + TaskStatus.DONE, + TaskStatus.FAILED, + TaskStatus.INTERRUPTED, + ] + + total = task_manager.count_tasks(status=status) + tasks = task_manager.get_tasks( + status=status, + bookmarked=bookmarked, + limit=limit, + offset=offset, + order="desc", + ) + parsed_tasks = [] + for task in tasks: + params = format_task_args(task) + task_data = task.dict() + task_data["params"] = params + parsed_tasks.append(TaskModel(**task_data)) + + return HistoryResponse( + total=total, + tasks=parsed_tasks, + ) + + @app.get("/agent-scheduler/v1/task/{id}", dependencies=deps) + def get_task(id: str): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + params = format_task_args(task) + task_data = task.dict() + task_data["params"] = params + if task.id == progress.current_task: + task_data["status"] = "running" + if task_data["status"] == TaskStatus.PENDING: + task_data["position"] = task_manager.get_task_position(id) + + return {"success": True, "data": TaskModel(**task_data)} + + @app.get("/agent-scheduler/v1/task/{id}/position", dependencies=deps) + def get_task_position(id: str): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + position = None if task.status != TaskStatus.PENDING else task_manager.get_task_position(id) + return {"success": True, "data": {"status": task.status, "position": position}} + + @app.put("/agent-scheduler/v1/task/{id}", dependencies=deps) + def update_task(id: str, body: UpdateTaskArgs): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + should_save = False + if body.name is not None: + task.name = body.name + should_save = True + + if body.checkpoint or body.params: + params: Dict = json.loads(task.params) + if body.checkpoint is not None: + params["checkpoint"] = body.checkpoint + if body.checkpoint is not None: + params["args"].update(body.params) + + task.params = json.dumps(params) + should_save = True + + if should_save: + task_manager.update_task(task) + + return {"success": True, "message": "Task updated."} + + @app.post("/agent-scheduler/v1/run/{id}", dependencies=deps, deprecated=True) + @app.post("/agent-scheduler/v1/task/{id}/run", dependencies=deps) + def run_task(id: str): + if progress.current_task is not None: + if progress.current_task == id: + return {"success": False, "message": "Task is running"} + else: + # move task up in queue + task_manager.prioritize_task(id, 0) + return { + "success": True, + "message": "Task is scheduled to run next", + } + else: + # run task + task = task_manager.get_task(id) + current_thread = threading.Thread( + target=TaskRunner.instance.execute_task, + args=( + task, + lambda: None, + ), + ) + current_thread.daemon = True + current_thread.start() + + return {"success": True, "message": "Task is executing"} + + @app.post("/agent-scheduler/v1/requeue/{id}", dependencies=deps, deprecated=True) + @app.post("/agent-scheduler/v1/task/{id}/requeue", dependencies=deps) + def requeue_task(id: str): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + task.id = str(uuid4()) + task.result = None + task.status = TaskStatus.PENDING + task.bookmarked = False + task.name = f"Copy of {task.name}" if task.name else None + task_manager.add_task(task) + task_runner.execute_pending_tasks_threading() + + return {"success": True, "message": "Task requeued"} + + @app.post("/agent-scheduler/v1/task/requeue-failed", dependencies=deps) + def requeue_failed_tasks(): + failed_tasks = task_manager.get_tasks(status=TaskStatus.FAILED) + if (len(failed_tasks)) == 0: + return {"success": False, "message": "No failed tasks"} + + for task in failed_tasks: + task.status = TaskStatus.PENDING + task.result = None + task.priority = int(datetime.now(timezone.utc).timestamp() * 1000) + task_manager.update_task(task) + + return {"success": True, "message": f"Requeued {len(failed_tasks)} failed tasks"} + + @app.post("/agent-scheduler/v1/delete/{id}", dependencies=deps, deprecated=True) + @app.delete("/agent-scheduler/v1/task/{id}", dependencies=deps) + def delete_task(id: str): + if progress.current_task == id: + shared.state.interrupt() + task_runner.interrupted = id + return {"success": True, "message": "Task interrupted"} + + task_manager.delete_task(id) + return {"success": True, "message": "Task deleted"} + + @app.post("/agent-scheduler/v1/move/{id}/{over_id}", dependencies=deps, deprecated=True) + @app.post("/agent-scheduler/v1/task/{id}/move/{over_id}", dependencies=deps) + def move_task(id: str, over_id: str): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + if over_id == "top": + task_manager.prioritize_task(id, 0) + return {"success": True, "message": "Task moved to top"} + elif over_id == "bottom": + task_manager.prioritize_task(id, -1) + return {"success": True, "message": "Task moved to bottom"} + else: + over_task = task_manager.get_task(over_id) + if over_task is None: + return {"success": False, "message": "Task not found"} + + task_manager.prioritize_task(id, over_task.priority) + return {"success": True, "message": "Task moved"} + + @app.post("/agent-scheduler/v1/bookmark/{id}", dependencies=deps, deprecated=True) + @app.post("/agent-scheduler/v1/task/{id}/bookmark", dependencies=deps) + def pin_task(id: str): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + task.bookmarked = True + task_manager.update_task(task) + return {"success": True, "message": "Task bookmarked"} + + @app.post("/agent-scheduler/v1/unbookmark/{id}", dependencies=deps, deprecated=True) + @app.post("/agent-scheduler/v1/task/{id}/unbookmark") + def unpin_task(id: str): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + task.bookmarked = False + task_manager.update_task(task) + return {"success": True, "message": "Task unbookmarked"} + + @app.post("/agent-scheduler/v1/rename/{id}", dependencies=deps, deprecated=True) + @app.post("/agent-scheduler/v1/task/{id}/rename", dependencies=deps) + def rename_task(id: str, name: str): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + task.name = name + task_manager.update_task(task) + return {"success": True, "message": "Task renamed."} + + @app.get("/agent-scheduler/v1/results/{id}", dependencies=deps, deprecated=True) + @app.get("/agent-scheduler/v1/task/{id}/results", dependencies=deps) + def get_task_results(id: str, zip: Optional[bool] = False): + task = task_manager.get_task(id) + if task is None: + return {"success": False, "message": "Task not found"} + + if task.status != TaskStatus.DONE: + return {"success": False, "message": f"Task is {task.status}"} + + if task.result is None: + return {"success": False, "message": "Task result is not available"} + + result: dict = json.loads(task.result) + infotexts = result.get("infotexts", None) + if infotexts is None: + geninfo = result.get("geninfo", {}) + infotexts = geninfo.get("infotexts", defaultdict(lambda: "")) + + if zip: + zip_buffer = io.BytesIO() + + # Create a new zip file in the in-memory buffer + with ZipFile(zip_buffer, "w") as zip_file: + # Loop through the files in the directory and add them to the zip file + for image in result["images"]: + if Path(image).is_file(): + zip_file.write(Path(image), Path(image).name) + + # Reset the buffer position to the beginning to avoid truncation issues + zip_buffer.seek(0) + + # Return the in-memory buffer as a streaming response with the appropriate headers + return StreamingResponse( + zip_buffer, + media_type="application/zip", + headers={"Content-Disposition": f"attachment; filename=results-{id}.zip"}, + ) + else: + data = [ + { + "image": encode_image_to_base64(Image.open(image)), + "infotext": infotexts[i], + } + for i, image in enumerate(result["images"]) + if Path(image).is_file() + ] + + return {"success": True, "data": data} + + @app.post("/agent-scheduler/v1/pause", dependencies=deps, deprecated=True) + @app.post("/agent-scheduler/v1/queue/pause", dependencies=deps) + def pause_queue(): + shared.opts.queue_paused = True + return {"success": True, "message": "Queue paused."} + + @app.post("/agent-scheduler/v1/resume", dependencies=deps, deprecated=True) + @app.post("/agent-scheduler/v1/queue/resume", dependencies=deps) + def resume_queue(): + shared.opts.queue_paused = False + TaskRunner.instance.execute_pending_tasks_threading() + return {"success": True, "message": "Queue resumed."} + + @app.post("/agent-scheduler/v1/queue/clear", dependencies=deps) + def clear_queue(): + task_manager.delete_tasks(status=TaskStatus.PENDING) + return {"success": True, "message": "Queue cleared."} + + @app.post("/agent-scheduler/v1/history/clear", dependencies=deps) + def clear_history(): + task_manager.delete_tasks( + status=[ + TaskStatus.DONE, + TaskStatus.FAILED, + TaskStatus.INTERRUPTED, + ] + ) + return {"success": True, "message": "History cleared."} + + task_runner.on_task_finished(on_task_finished) diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/__init__.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..c42194de9d0021c95fdf6497af4a2246cef6715e --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/__init__.py @@ -0,0 +1,87 @@ +from pathlib import Path +from sqlalchemy import create_engine, inspect, text, String, Text + +from .base import Base, metadata, db_file +from .app_state import AppStateKey, AppState, AppStateManager +from .task import TaskStatus, Task, TaskManager + +version = "2" + +state_manager = AppStateManager() +task_manager = TaskManager() + + +def init(): + engine = create_engine(f"sqlite:///{db_file}") + + metadata.create_all(engine) + + state_manager.set_value(AppStateKey.Version, version) + # check if app state exists + if state_manager.get_value(AppStateKey.QueueState) is None: + # create app state + state_manager.set_value(AppStateKey.QueueState, "running") + + inspector = inspect(engine) + with engine.connect() as conn: + task_columns = inspector.get_columns("task") + # add result column + if not any(col["name"] == "result" for col in task_columns): + conn.execute(text("ALTER TABLE task ADD COLUMN result TEXT")) + + # add api_task_id column + if not any(col["name"] == "api_task_id" for col in task_columns): + conn.execute(text("ALTER TABLE task ADD COLUMN api_task_id VARCHAR(64)")) + + # add api_task_callback column + if not any(col["name"] == "api_task_callback" for col in task_columns): + conn.execute(text("ALTER TABLE task ADD COLUMN api_task_callback VARCHAR(255)")) + + # add name column + if not any(col["name"] == "name" for col in task_columns): + conn.execute(text("ALTER TABLE task ADD COLUMN name VARCHAR(255)")) + + # add bookmarked column + if not any(col["name"] == "bookmarked" for col in task_columns): + conn.execute(text("ALTER TABLE task ADD COLUMN bookmarked BOOLEAN DEFAULT FALSE")) + + params_column = next(col for col in task_columns if col["name"] == "params") + if version > "1" and not isinstance(params_column["type"], Text): + transaction = conn.begin() + conn.execute( + text( + """ + CREATE TABLE task_temp ( + id VARCHAR(64) NOT NULL, + type VARCHAR(20) NOT NULL, + params TEXT NOT NULL, + script_params BLOB NOT NULL, + priority INTEGER NOT NULL, + status VARCHAR(20) NOT NULL, + created_at DATETIME DEFAULT (datetime('now')) NOT NULL, + updated_at DATETIME DEFAULT (datetime('now')) NOT NULL, + result TEXT, + PRIMARY KEY (id) + )""" + ) + ) + conn.execute(text("INSERT INTO task_temp SELECT * FROM task")) + conn.execute(text("DROP TABLE task")) + conn.execute(text("ALTER TABLE task_temp RENAME TO task")) + transaction.commit() + + conn.close() + + +__all__ = [ + "init", + "Base", + "metadata", + "db_file", + "AppStateKey", + "AppState", + "TaskStatus", + "Task", + "task_manager", + "state_manager", +] diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/app_state.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/app_state.py new file mode 100644 index 0000000000000000000000000000000000000000..21073aeae7db33d00ffc4ef898e3e6bc3d8cc818 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/app_state.py @@ -0,0 +1,80 @@ +from enum import Enum +from typing import Union + +from sqlalchemy import Column, String +from sqlalchemy.orm import Session + +from .base import BaseTableManager, Base + + +class AppStateKey(str, Enum): + Version = "version" + QueueState = "queue_state" # paused or running + + +class AppState: + def __init__(self, key: str, value: str): + self.key: str = key + self.value: str = value + + @staticmethod + def from_table(table: "AppStateTable"): + return AppState(table.key, table.value) + + def to_table(self): + return AppStateTable(key=self.key, value=self.value) + + +class AppStateTable(Base): + __tablename__ = "app_state" + + key = Column(String(64), primary_key=True) + value = Column(String(255), nullable=True) + + def __repr__(self): + return f"AppState(key={self.key!r}, value={self.value!r})" + + +class AppStateManager(BaseTableManager): + def get_value(self, key: str) -> Union[str, None]: + session = Session(self.engine) + try: + result = session.get(AppStateTable, key) + if result: + return result.value + else: + return None + except Exception as e: + print(f"Exception getting value from database: {e}") + raise e + finally: + session.close() + + def set_value(self, key: str, value: str): + session = Session(self.engine) + try: + result = session.get(AppStateTable, key) + if result: + result.value = value + else: + result = AppStateTable(key=key, value=value) + session.add(result) + session.commit() + except Exception as e: + print(f"Exception setting value in database: {e}") + raise e + finally: + session.close() + + def delete_value(self, key: str): + session = Session(self.engine) + try: + result = session.get(AppStateTable, key) + if result: + session.delete(result) + session.commit() + except Exception as e: + print(f"Exception deleting value from database: {e}") + raise e + finally: + session.close() diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/base.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/base.py new file mode 100644 index 0000000000000000000000000000000000000000..849d85a21fed6d0695dadb8924a88b960f8459dc --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/base.py @@ -0,0 +1,39 @@ +import os + +from sqlalchemy import create_engine +from sqlalchemy.schema import MetaData +from sqlalchemy.orm import declarative_base + +from modules import scripts +from modules import shared + +if hasattr(shared.cmd_opts, "agent_scheduler_sqlite_file"): + # if relative path, join with basedir + if not os.path.isabs(shared.cmd_opts.agent_scheduler_sqlite_file): + db_file = os.path.join(scripts.basedir(), shared.cmd_opts.agent_scheduler_sqlite_file) + else: + db_file = os.path.abspath(shared.cmd_opts.agent_scheduler_sqlite_file) +else: + db_file = os.path.join(scripts.basedir(), "task_scheduler.sqlite3") + +print(f"Using sqlite file: {db_file}") + + +Base = declarative_base() +metadata: MetaData = Base.metadata + +class BaseTableManager: + def __init__(self, engine = None): + # Get the db connection object, making the file and tables if needed. + try: + self.engine = engine if engine else create_engine(f"sqlite:///{db_file}") + except Exception as e: + print(f"Exception connecting to database: {e}") + raise e + + def get_engine(self): + return self.engine + + # Commit and close the database connection. + def quit(self): + self.engine.dispose() diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/task.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/task.py new file mode 100644 index 0000000000000000000000000000000000000000..19b687ad1749d99c31114b1f387e77c6b5ed5a90 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/db/task.py @@ -0,0 +1,394 @@ +import json +import base64 +from enum import Enum +from datetime import datetime, timezone +from typing import Optional, Union, List, Dict + +from sqlalchemy import ( + TypeDecorator, + Column, + String, + Text, + Integer, + DateTime as DateTimeImpl, + LargeBinary, + Boolean, + text, + func, +) +from sqlalchemy.orm import Session + +from .base import BaseTableManager, Base +from ..models import TaskModel + + +class DateTime(TypeDecorator): + impl = DateTimeImpl + cache_ok = True + + def process_bind_param(self, value: Optional[datetime], _): + if value is None: + return None + return value.astimezone(timezone.utc) + + def process_result_value(self, value: Optional[datetime], _): + if value is None: + return None + if value.tzinfo is None: + return value.replace(tzinfo=timezone.utc) + return value.astimezone(timezone.utc) + + +class TaskStatus(str, Enum): + PENDING = "pending" + RUNNING = "running" + DONE = "done" + FAILED = "failed" + INTERRUPTED = "interrupted" + + +class Task(TaskModel): + script_params: bytes = None + params: str + + def __init__(self, **kwargs): + priority = kwargs.pop("priority", int(datetime.now(timezone.utc).timestamp() * 1000)) + super().__init__(priority=priority, **kwargs) + + class Config(TaskModel.__config__): + exclude = ["script_params"] + + @staticmethod + def from_table(table: "TaskTable"): + return Task( + id=table.id, + api_task_id=table.api_task_id, + api_task_callback=table.api_task_callback, + name=table.name, + type=table.type, + params=table.params, + script_params=table.script_params, + priority=table.priority, + status=table.status, + result=table.result, + bookmarked=table.bookmarked, + created_at=table.created_at, + updated_at=table.updated_at, + ) + + def to_table(self): + return TaskTable( + id=self.id, + api_task_id=self.api_task_id, + api_task_callback=self.api_task_callback, + name=self.name, + type=self.type, + params=self.params, + script_params=self.script_params, + priority=self.priority, + status=self.status, + result=self.result, + bookmarked=self.bookmarked, + ) + + def from_json(json_obj: Dict): + return Task( + id=json_obj.get("id"), + api_task_id=json_obj.get("api_task_id", None), + api_task_callback=json_obj.get("api_task_callback", None), + name=json_obj.get("name", None), + type=json_obj.get("type"), + status=json_obj.get("status", TaskStatus.PENDING), + params=json.dumps(json_obj.get("params")), + script_params=base64.b64decode(json_obj.get("script_params")), + priority=json_obj.get("priority", int(datetime.now(timezone.utc).timestamp() * 1000)), + result=json_obj.get("result", None), + bookmarked=json_obj.get("bookmarked", False), + created_at=datetime.fromtimestamp(json_obj.get("created_at", datetime.now(timezone.utc).timestamp())), + updated_at=datetime.fromtimestamp(json_obj.get("updated_at", datetime.now(timezone.utc).timestamp())), + ) + + def to_json(self): + return { + "id": self.id, + "api_task_id": self.api_task_id, + "api_task_callback": self.api_task_callback, + "name": self.name, + "type": self.type, + "status": self.status, + "params": json.loads(self.params), + "script_params": base64.b64encode(self.script_params).decode("utf-8"), + "priority": self.priority, + "result": self.result, + "bookmarked": self.bookmarked, + "created_at": int(self.created_at.timestamp()), + "updated_at": int(self.updated_at.timestamp()), + } + + +class TaskTable(Base): + __tablename__ = "task" + + id = Column(String(64), primary_key=True) + api_task_id = Column(String(64), nullable=True) + api_task_callback = Column(String(255), nullable=True) + name = Column(String(255), nullable=True) + type = Column(String(20), nullable=False) # txt2img or img2txt + params = Column(Text, nullable=False) # task args + script_params = Column(LargeBinary, nullable=False) # script args + priority = Column(Integer, nullable=False) + status = Column(String(20), nullable=False, default="pending") # pending, running, done, failed + result = Column(Text) # task result + bookmarked = Column(Boolean, nullable=True, default=False) + created_at = Column( + DateTime, + nullable=False, + server_default=text("(datetime('now'))"), + ) + updated_at = Column( + DateTime, + nullable=False, + server_default=text("(datetime('now'))"), + onupdate=text("(datetime('now'))"), + ) + + def __repr__(self): + return f"Task(id={self.id!r}, type={self.type!r}, params={self.params!r}, status={self.status!r}, created_at={self.created_at!r})" + + +class TaskManager(BaseTableManager): + def get_task(self, id: str) -> Union[TaskTable, None]: + session = Session(self.engine) + try: + task = session.get(TaskTable, id) + + return Task.from_table(task) if task else None + except Exception as e: + print(f"Exception getting task from database: {e}") + raise e + finally: + session.close() + + def get_task_position(self, id: str) -> int: + session = Session(self.engine) + try: + task = session.get(TaskTable, id) + if task: + return ( + session.query(func.count(TaskTable.id)) + .filter(TaskTable.status == TaskStatus.PENDING) + .filter(TaskTable.priority < task.priority) + .scalar() + ) + else: + raise Exception(f"Task with id {id} not found") + except Exception as e: + print(f"Exception getting task position from database: {e}") + raise e + finally: + session.close() + + def get_tasks( + self, + type: str = None, + status: Union[str, List[str]] = None, + bookmarked: bool = None, + api_task_id: str = None, + limit: int = None, + offset: int = None, + order: str = "asc", + ) -> List[TaskTable]: + session = Session(self.engine) + try: + query = session.query(TaskTable) + if type: + query = query.filter(TaskTable.type == type) + + if status is not None: + if isinstance(status, list): + query = query.filter(TaskTable.status.in_(status)) + else: + query = query.filter(TaskTable.status == status) + + if api_task_id: + query = query.filter(TaskTable.api_task_id == api_task_id) + + if bookmarked == True: + query = query.filter(TaskTable.bookmarked == bookmarked) + else: + query = query.order_by(TaskTable.bookmarked.asc()) + + query = query.order_by(TaskTable.priority.asc() if order == "asc" else TaskTable.priority.desc()) + + if limit: + query = query.limit(limit) + + if offset: + query = query.offset(offset) + + all = query.all() + return [Task.from_table(t) for t in all] + except Exception as e: + print(f"Exception getting tasks from database: {e}") + raise e + finally: + session.close() + + def count_tasks( + self, + type: str = None, + status: Union[str, List[str]] = None, + api_task_id: str = None, + ) -> int: + session = Session(self.engine) + try: + query = session.query(TaskTable) + if type: + query = query.filter(TaskTable.type == type) + + if status is not None: + if isinstance(status, list): + query = query.filter(TaskTable.status.in_(status)) + else: + query = query.filter(TaskTable.status == status) + + if api_task_id: + query = query.filter(TaskTable.api_task_id == api_task_id) + + return query.count() + except Exception as e: + print(f"Exception counting tasks from database: {e}") + raise e + finally: + session.close() + + def add_task(self, task: Task) -> TaskTable: + session = Session(self.engine) + try: + item = task.to_table() + session.add(item) + session.commit() + return task + except Exception as e: + print(f"Exception adding task to database: {e}") + raise e + finally: + session.close() + + def update_task(self, task: Task) -> TaskTable: + session = Session(self.engine) + try: + current = session.get(TaskTable, task.id) + if current is None: + raise Exception(f"Task with id {id} not found") + + session.merge(task.to_table()) + session.commit() + return task + + except Exception as e: + print(f"Exception updating task in database: {e}") + raise e + finally: + session.close() + + def prioritize_task(self, id: str, priority: int) -> TaskTable: + """0 means move to top, -1 means move to bottom, otherwise set the exact priority""" + + session = Session(self.engine) + try: + result = session.get(TaskTable, id) + if result: + if priority == 0: + result.priority = self.__get_min_priority(status=TaskStatus.PENDING) - 1 + elif priority == -1: + result.priority = int(datetime.now(timezone.utc).timestamp() * 1000) + else: + self.__move_tasks_down(priority) + session.execute(text("SELECT 1")) + result.priority = priority + + session.commit() + return result + else: + raise Exception(f"Task with id {id} not found") + except Exception as e: + print(f"Exception updating task in database: {e}") + raise e + finally: + session.close() + + def delete_task(self, id: str): + session = Session(self.engine) + try: + result = session.get(TaskTable, id) + if result: + session.delete(result) + session.commit() + else: + raise Exception(f"Task with id {id} not found") + except Exception as e: + print(f"Exception deleting task from database: {e}") + raise e + finally: + session.close() + + def delete_tasks( + self, + before: datetime = None, + status: Union[str, List[str]] = [ + TaskStatus.DONE, + TaskStatus.FAILED, + TaskStatus.INTERRUPTED, + ], + ): + session = Session(self.engine) + try: + query = session.query(TaskTable).filter(TaskTable.bookmarked == False) + + if before: + query = query.filter(TaskTable.created_at < before) + + if status is not None: + if isinstance(status, list): + query = query.filter(TaskTable.status.in_(status)) + else: + query = query.filter(TaskTable.status == status) + + deleted_rows = query.delete() + session.commit() + + return deleted_rows + except Exception as e: + print(f"Exception deleting tasks from database: {e}") + raise e + finally: + session.close() + + def __get_min_priority(self, status: str = None) -> int: + session = Session(self.engine) + try: + query = session.query(func.min(TaskTable.priority)) + if status is not None: + query = query.filter(TaskTable.status == status) + + min_priority = query.scalar() + return min_priority if min_priority else 0 + except Exception as e: + print(f"Exception getting min priority from database: {e}") + raise e + finally: + session.close() + + def __move_tasks_down(self, priority: int): + session = Session(self.engine) + try: + session.query(TaskTable).filter(TaskTable.priority >= priority).update( + {TaskTable.priority: TaskTable.priority + 1} + ) + session.commit() + except Exception as e: + print(f"Exception moving tasks down in database: {e}") + raise e + finally: + session.close() diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/helpers.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/helpers.py new file mode 100644 index 0000000000000000000000000000000000000000..ef97f6e4bf2037ed45296c3c19c502418961d052 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/helpers.py @@ -0,0 +1,202 @@ +import os +import sys +import abc +import atexit +import time +import logging +import platform +import requests +import traceback +from typing import Callable, List, NoReturn + +import gradio as gr +from gradio.blocks import Block, BlockContext + +is_windows = platform.system() == "Windows" +is_macos = platform.system() == "Darwin" + +if logging.getLogger().hasHandlers(): + log = logging.getLogger("sd") +else: + import copy + class ColoredFormatter(logging.Formatter): + COLORS = { + "DEBUG": "\033[0;36m", # CYAN + "INFO": "\033[0;32m", # GREEN + "WARNING": "\033[0;33m", # YELLOW + "ERROR": "\033[0;31m", # RED + "CRITICAL": "\033[0;37;41m", # WHITE ON RED + "RESET": "\033[0m", # RESET COLOR + } + + def format(self, record): + colored_record = copy.copy(record) + levelname = colored_record.levelname + seq = self.COLORS.get(levelname, self.COLORS["RESET"]) + colored_record.levelname = f"{seq}{levelname}{self.COLORS['RESET']}" + return super().format(colored_record) + + # Create a new logger + logger = logging.getLogger("AgentScheduler") + logger.propagate = False + + # Add handler if we don't have one. + if not logger.handlers: + handler = logging.StreamHandler(sys.stdout) + handler.setFormatter(ColoredFormatter("%(levelname)s - %(message)s")) + logger.addHandler(handler) + + # Configure logger + loglevel = logging.INFO + logger.setLevel(loglevel) + + log = logger + + +class Singleton(abc.ABCMeta, type): + """ + Singleton metaclass for ensuring only one instance of a class. + """ + + _instances = {} + + def __call__(cls, *args, **kwargs): + """Call method for the singleton metaclass.""" + if cls not in cls._instances: + cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) + return cls._instances[cls] + + +def compare_components_with_ids(components: List[Block], ids: List[int]): + return len(components) == len(ids) and all( + component._id == _id for component, _id in zip(components, ids) + ) + + +def get_component_by_elem_id(root: Block, elem_id: str): + if root.elem_id == elem_id: + return root + + elem = None + if isinstance(root, BlockContext): + for block in root.children: + elem = get_component_by_elem_id(block, elem_id) + if elem is not None: + break + + return elem + + +def get_components_by_ids(root: Block, ids: List[int]): + components: List[Block] = [] + + if root._id in ids: + components.append(root) + ids = [_id for _id in ids if _id != root._id] + + if isinstance(root, BlockContext): + for block in root.children: + components.extend(get_components_by_ids(block, ids)) + + return components + + +def detect_control_net(root: gr.Blocks, submit: gr.Button): + UiControlNetUnit = None + + dependencies: List[dict] = [ + x + for x in root.dependencies + if x["trigger"] == "click" and submit._id in x["targets"] + ] + for d in dependencies: + if len(d["outputs"]) == 1: + outputs = get_components_by_ids(root, d["outputs"]) + output = outputs[0] + if ( + isinstance(output, gr.State) + and type(output.value).__name__ == "UiControlNetUnit" + ): + UiControlNetUnit = type(output.value) + + return UiControlNetUnit + + +def get_dict_attribute(dict_inst: dict, name_string: str, default=None): + nested_keys = name_string.split(".") + value = dict_inst + + for key in nested_keys: + value = value.get(key, None) + + if value is None: + return default + + return value + + +def set_dict_attribute(dict_inst: dict, name_string: str, value): + """ + Set an attribute to a dictionary using dot notation. + If the attribute does not already exist, it will create a nested dictionary. + + Parameters: + - dict_inst: the dictionary instance to set the attribute + - name_string: the attribute name in dot notation (ex: 'attribute.name') + - value: the value to set for the attribute + + Returns: + None + """ + # Split the attribute names by dot + name_list = name_string.split(".") + + # Traverse the dictionary and create a nested dictionary if necessary + current_dict = dict_inst + for name in name_list[:-1]: + if name not in current_dict: + current_dict[name] = {} + current_dict = current_dict[name] + + # Set the final attribute to its value + current_dict[name_list[-1]] = value + + +def request_with_retry( + make_request: Callable[[], requests.Response], + max_try: int = 3, + retries: int = 0, +): + try: + res = make_request() + if res.status_code > 400: + raise Exception(res.text) + + return True + except requests.exceptions.ConnectionError: + log.error("[ArtVenture] Connection error while uploading result") + if retries >= max_try - 1: + return False + + time.sleep(1) + log.info(f"[ArtVenture] Retrying {retries + 1}...") + return request_with_retry( + make_request, + max_try=max_try, + retries=retries + 1, + ) + except Exception as e: + log.error("[ArtVenture] Error while uploading result") + log.error(e) + log.debug(traceback.format_exc()) + return False + + +def _exit(status: int) -> NoReturn: + try: + atexit._run_exitfuncs() + except: + pass + sys.stdout.flush() + sys.stderr.flush() + os._exit(status) diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/models.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/models.py new file mode 100644 index 0000000000000000000000000000000000000000..30e2fc0decb6749ca208773d6a94575c719423a0 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/models.py @@ -0,0 +1,132 @@ +from datetime import datetime, timezone +from typing import Optional, List, Any, Dict +from pydantic import BaseModel, Field + +from modules import sd_samplers +from modules.api.models import ( + StableDiffusionTxt2ImgProcessingAPI, + StableDiffusionImg2ImgProcessingAPI, +) + + +def convert_datetime_to_iso_8601_with_z_suffix(dt: datetime) -> str: + return dt.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" if dt else None + + +def transform_to_utc_datetime(dt: datetime) -> datetime: + return dt.astimezone(tz=timezone.utc) + + +class QueueStatusAPI(BaseModel): + limit: Optional[int] = Field(title="Limit", description="The maximum number of tasks to return", default=20) + offset: Optional[int] = Field(title="Offset", description="The offset of the tasks to return", default=0) + + +class TaskModel(BaseModel): + id: str = Field(title="Task Id") + api_task_id: Optional[str] = Field(title="API Task Id", default=None) + api_task_callback: Optional[str] = Field(title="API Task Callback", default=None) + name: Optional[str] = Field(title="Task Name") + type: str = Field(title="Task Type", description="Either txt2img or img2img") + status: str = Field( + "pending", + title="Task Status", + description="Either pending, running, done or failed", + ) + params: Dict[str, Any] = Field(title="Task Parameters", description="The parameters of the task in JSON format") + priority: Optional[int] = Field(title="Task Priority") + position: Optional[int] = Field(title="Task Position") + result: Optional[str] = Field(title="Task Result", description="The result of the task in JSON format") + bookmarked: Optional[bool] = Field(title="Is task bookmarked") + created_at: Optional[datetime] = Field( + title="Task Created At", + description="The time when the task was created", + default=None, + ) + updated_at: Optional[datetime] = Field( + title="Task Updated At", + description="The time when the task was updated", + default=None, + ) + + +class Txt2ImgApiTaskArgs(StableDiffusionTxt2ImgProcessingAPI): + checkpoint: Optional[str] = Field( + None, + title="Custom checkpoint.", + description="Custom checkpoint hash. If not specified, the latest checkpoint will be used.", + ) + vae: Optional[str] = Field( + None, + title="Custom VAE.", + description="Custom VAE. If not specified, the current VAE will be used.", + ) + sampler_index: Optional[str] = Field(sd_samplers.samplers[0].name, title="Sampler name", alias="sampler_name") + callback_url: Optional[str] = Field( + None, + title="Callback URL", + description="The callback URL to send the result to.", + ) + + class Config(StableDiffusionTxt2ImgProcessingAPI.__config__): + @staticmethod + def schema_extra(schema: Dict[str, Any], model) -> None: + props = schema.get("properties", {}) + props.pop("send_images", None) + props.pop("save_images", None) + + +class Img2ImgApiTaskArgs(StableDiffusionImg2ImgProcessingAPI): + checkpoint: Optional[str] = Field( + None, + title="Custom checkpoint.", + description="Custom checkpoint hash. If not specified, the latest checkpoint will be used.", + ) + vae: Optional[str] = Field( + None, + title="Custom VAE.", + description="Custom VAE. If not specified, the current VAE will be used.", + ) + sampler_index: Optional[str] = Field(sd_samplers.samplers[0].name, title="Sampler name", alias="sampler_name") + callback_url: Optional[str] = Field( + None, + title="Callback URL", + description="The callback URL to send the result to.", + ) + + class Config(StableDiffusionImg2ImgProcessingAPI.__config__): + @staticmethod + def schema_extra(schema: Dict[str, Any], model) -> None: + props = schema.get("properties", {}) + props.pop("send_images", None) + props.pop("save_images", None) + + +class QueueTaskResponse(BaseModel): + task_id: str = Field(title="Task Id") + + +class QueueStatusResponse(BaseModel): + current_task_id: Optional[str] = Field(title="Current Task Id", description="The on progress task id") + pending_tasks: List[TaskModel] = Field(title="Pending Tasks", description="The pending tasks in the queue") + total_pending_tasks: int = Field(title="Queue length", description="The total pending tasks in the queue") + paused: bool = Field(title="Paused", description="Whether the queue is paused") + + class Config: + json_encoders = {datetime: lambda dt: int(dt.timestamp() * 1e3)} + + +class HistoryResponse(BaseModel): + tasks: List[TaskModel] = Field(title="Tasks") + total: int = Field(title="Task count") + + class Config: + json_encoders = {datetime: lambda dt: int(dt.timestamp() * 1e3)} + + +class UpdateTaskArgs(BaseModel): + name: Optional[str] = Field(title="Task Name") + checkpoint: Optional[str] + params: Optional[Dict[str, Any]] = Field( + title="Task Parameters", description="The parameters of the task in JSON format" + ) diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/task_helpers.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/task_helpers.py new file mode 100644 index 0000000000000000000000000000000000000000..b9e2ad46f39e8263c65c58d4ee8747aa28b49086 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/task_helpers.py @@ -0,0 +1,509 @@ +import io +import zlib +import base64 +import pickle +import inspect +import requests +import numpy as np +import torch +from typing import Union, List, Dict +from enum import Enum +from PIL import Image, ImageOps, ImageChops, ImageEnhance, ImageFilter, PngImagePlugin +from numpy import ndarray +from torch import Tensor + +from modules import sd_samplers, scripts, shared, sd_vae, images, txt2img, img2img +from modules.generation_parameters_copypaste import create_override_settings_dict +from modules.sd_models import CheckpointInfo, get_closet_checkpoint_match +from modules.api.models import ( + StableDiffusionTxt2ImgProcessingAPI, + StableDiffusionImg2ImgProcessingAPI, +) + +from .helpers import log, get_dict_attribute + +img2img_image_args_by_mode: Dict[int, List[List[str]]] = { + 0: [["init_img"]], + 1: [["sketch"]], + 2: [["init_img_with_mask", "image"], ["init_img_with_mask", "mask"]], + 3: [["inpaint_color_sketch"], ["inpaint_color_sketch_orig"]], + 4: [["init_img_inpaint"], ["init_mask_inpaint"]], +} + + +def get_script_by_name(script_name: str, is_img2img: bool = False, is_always_on: bool = False) -> scripts.Script: + script_runner = scripts.scripts_img2img if is_img2img else scripts.scripts_txt2img + available_scripts = script_runner.alwayson_scripts if is_always_on else script_runner.selectable_scripts + + return next( + (s for s in available_scripts if s.title().lower() == script_name.lower()), + None, + ) + + +def load_image_from_url(url: str): + try: + response = requests.get(url) + buffer = io.BytesIO(response.content) + return Image.open(buffer) + except Exception as e: + log.error(f"[AgentScheduler] Error downloading image from url: {e}") + return None + + +def encode_image_to_base64(image): + if isinstance(image, np.ndarray): + image = Image.fromarray(image.astype("uint8")) + elif isinstance(image, str): + if image.startswith("http://") or image.startswith("https://"): + image = load_image_from_url(image) + + if not isinstance(image, Image.Image): + return image + + geninfo, _ = images.read_info_from_image(image) + pnginfo = PngImagePlugin.PngInfo() + if geninfo: + pnginfo.add_text("parameters", geninfo) + + with io.BytesIO() as output_bytes: + if geninfo: + image.save(output_bytes, format="PNG", pnginfo=pnginfo) + else: + image.save(output_bytes, format="PNG") # remove pnginfo to save space + bytes_data = output_bytes.getvalue() + return "data:image/png;base64," + base64.b64encode(bytes_data).decode("utf-8") + + +def serialize_image(image): + if isinstance(image, np.ndarray): + shape = image.shape + dtype = image.dtype + data = base64.b64encode(zlib.compress(image.tobytes())).decode() + return {"shape": shape, "data": data, "cls": "ndarray", "dtype": str(dtype)} + elif isinstance(image, torch.Tensor): + shape = image.shape + dtype = image.dtype + data = base64.b64encode(zlib.compress(image.detach().numpy().tobytes())).decode() + return { + "shape": shape, + "data": data, + "cls": "Tensor", + "device": image.device.type, + "dtype": str(dtype), + } + elif isinstance(image, Image.Image): + size = image.size + mode = image.mode + data = base64.b64encode(zlib.compress(image.tobytes())).decode() + return { + "size": size, + "mode": mode, + "data": data, + "cls": "Image", + } + else: + return image + + +def deserialize_image(image_str): + if isinstance(image_str, dict) and image_str.get("cls", None): + cls = image_str["cls"] + data = zlib.decompress(base64.b64decode(image_str["data"])) + + if cls == "ndarray": + # warn if required fields are missing + if image_str.get("dtype", None) is None: + log.warning(f"Missing dtype for ndarray") + shape = tuple(image_str["shape"]) + dtype = np.dtype(image_str.get("dtype", "uint8")) + image = np.frombuffer(data, dtype=dtype) + return image.reshape(shape) + elif cls == "Tensor": + if image_str.get("device", None) is None: + log.warning(f"Missing device for Tensor") + shape = tuple(image_str["shape"]) + dtype = np.dtype(image_str.get("dtype", "uint8")) + image_np = np.frombuffer(data, dtype=dtype) + return torch.from_numpy(image_np.reshape(shape)).to(device=image_str.get("device", "cpu")) + else: + size = tuple(image_str["size"]) + mode = image_str["mode"] + return Image.frombytes(mode, size, data) + else: + return image_str + + +def serialize_img2img_image_args(args: Dict): + for mode, image_args in img2img_image_args_by_mode.items(): + for keys in image_args: + if mode != args["mode"]: + # set None to unused image args to save space + args[keys[0]] = None + elif len(keys) == 1: + image = args.get(keys[0], None) + args[keys[0]] = serialize_image(image) + else: + value = args.get(keys[0], {}) + image = value.get(keys[1], None) + value[keys[1]] = serialize_image(image) + args[keys[0]] = value + + +def deserialize_img2img_image_args(args: Dict): + for mode, image_args in img2img_image_args_by_mode.items(): + if mode != args["mode"]: + continue + + for keys in image_args: + if len(keys) == 1: + image = args.get(keys[0], None) + args[keys[0]] = deserialize_image(image) + else: + value = args.get(keys[0], {}) + image = value.get(keys[1], None) + value[keys[1]] = deserialize_image(image) + args[keys[0]] = value + + +def serialize_controlnet_args(cnet_unit): + args: Dict = cnet_unit.__dict__ + serialized_args = {"is_cnet": True} + for k, v in args.items(): + if isinstance(v, Enum): + serialized_args[k] = v.value + else: + serialized_args[k] = v + + return serialized_args + + +def deserialize_controlnet_args(args: Dict): + new_args = args.copy() + new_args.pop("is_cnet", None) + new_args.pop("is_ui", None) + + return new_args + + +def serialize_script_args(script_args: List): + # convert UiControlNetUnit to dict to make it serializable + for i, a in enumerate(script_args): + if type(a).__name__ == "UiControlNetUnit": + script_args[i] = serialize_controlnet_args(a) + + return zlib.compress(pickle.dumps(script_args)) + + +def deserialize_script_args(script_args: Union[bytes, List], UiControlNetUnit = None): + if type(script_args) is bytes: + script_args = pickle.loads(zlib.decompress(script_args)) + + for i, a in enumerate(script_args): + if isinstance(a, dict) and a.get("is_cnet", False): + unit = deserialize_controlnet_args(a) + skip_controlnet = False + if UiControlNetUnit is not None: + u = UiControlNetUnit() + for k, v in unit.items(): + if isinstance(getattr(u, k, None), Enum): + # check if v is a valid enum value + enum_obj: Enum= getattr(u, k) + if v not in [e.value for e in enum_obj.__class__]: + log.error(f"Invalid enum value {v} for {k} encountered, valid value is {enum_obj.__class__}") + skip_controlnet = True + break + unit[k] = type(getattr(u, k))(v) + if not skip_controlnet: # valid + unit = UiControlNetUnit(**unit) + if not skip_controlnet: # valid + script_args[i] = unit + + return script_args + + +def map_controlnet_args_to_api_task_args(args: Dict): + if type(args).__name__ == "UiControlNetUnit": + args = args.__dict__ + + for k, v in args.items(): + if k == "image" and v is not None: + args[k] = { + "image": encode_image_to_base64(v["image"]), + "mask": encode_image_to_base64(v["mask"]) if v.get("mask", None) is not None else None, + } + if isinstance(v, Enum): + args[k] = v.value + + return args + + +def map_ui_task_args_list_to_named_args(args: List, is_img2img: bool): + fn = ( + getattr(img2img, "img2img_create_processing", img2img.img2img) + if is_img2img + else getattr(txt2img, "txt2img_create_processing", txt2img.txt2img) + ) + arg_names = inspect.getfullargspec(fn).args + + # SD WebUI 1.5.0 has new request arg + if "request" in arg_names: + args.insert(arg_names.index("request"), None) + + named_args = dict(zip(arg_names, args[0 : len(arg_names)])) + script_args = args[len(arg_names) :] + + override_settings_texts: List[str] = named_args.get("override_settings_texts", []) + # add clip_skip if not exist in args (vlad fork has this arg) + if named_args.get("clip_skip", None) is None: + clip_skip = next((s for s in override_settings_texts if s.startswith("Clip skip:")), None) + if clip_skip is None and hasattr(shared.opts, "CLIP_stop_at_last_layers"): + override_settings_texts.append(f"Clip skip: {shared.opts.CLIP_stop_at_last_layers}") + + named_args["override_settings_texts"] = override_settings_texts + + sampler_index = named_args.get("sampler_index", None) + if sampler_index is not None: + available_samplers = sd_samplers.samplers_for_img2img if is_img2img else sd_samplers.samplers + sampler_name = available_samplers[named_args["sampler_index"]].name + named_args["sampler_name"] = sampler_name + log.debug(f"serialize sampler index: {str(sampler_index)} as {sampler_name}") + + return ( + named_args, + script_args, + ) + + +def map_named_args_to_ui_task_args_list(named_args: Dict, script_args: List, is_img2img: bool): + fn = ( + getattr(img2img, "img2img_create_processing", img2img.img2img) + if is_img2img + else getattr(txt2img, "txt2img_create_processing", txt2img.txt2img) + ) + arg_names = inspect.getfullargspec(fn).args + + sampler_name = named_args.get("sampler_name", None) + if sampler_name is not None: + available_samplers = sd_samplers.samplers_for_img2img if is_img2img else sd_samplers.samplers + sampler_index = next((i for i, x in enumerate(available_samplers) if x.name == sampler_name), 0) + named_args["sampler_index"] = sampler_index + + args = [named_args.get(name, None) for name in arg_names] + args.extend(script_args) + + return args + + +def map_script_args_list_to_named(script: scripts.Script, args: List): + script_name = script.title().lower() + + if script_name == "controlnet": + for i, cnet_args in enumerate(args): + args[i] = map_controlnet_args_to_api_task_args(cnet_args) + + return args + + fn = script.process if script.alwayson else script.run + inspection = inspect.getfullargspec(fn) + arg_names = inspection.args[2:] + named_script_args = dict(zip(arg_names, args[: len(arg_names)])) + if inspection.varargs is not None: + named_script_args[inspection.varargs] = args[len(arg_names) :] + + return named_script_args + + +def map_named_script_args_to_list(script: scripts.Script, named_args: Union[dict, list]): + script_name = script.title().lower() + + if isinstance(named_args, dict): + fn = script.process if script.alwayson else script.run + inspection = inspect.getfullargspec(fn) + arg_names = inspection.args[2:] + args = [named_args.get(name, None) for name in arg_names] + if inspection.varargs is not None: + args.extend(named_args.get(inspection.varargs, [])) + + return args + + if isinstance(named_args, list): + if script_name == "controlnet": + for i, cnet_args in enumerate(named_args): + named_args[i] = map_controlnet_args_to_api_task_args(cnet_args) + + return named_args + + +def map_ui_task_args_to_api_task_args(named_args: Dict, script_args: List, is_img2img: bool): + api_task_args: Dict = named_args.copy() + + prompt_styles = api_task_args.pop("prompt_styles", []) + api_task_args["styles"] = prompt_styles + + sampler_index = api_task_args.pop("sampler_index", 0) + api_task_args["sampler_name"] = sd_samplers.samplers[sampler_index].name + + override_settings_texts = api_task_args.pop("override_settings_texts", []) + api_task_args["override_settings"] = create_override_settings_dict(override_settings_texts) + + if is_img2img: + mode = api_task_args.pop("mode", 0) + for arg_mode, image_args in img2img_image_args_by_mode.items(): + if mode != arg_mode: + for keys in image_args: + api_task_args.pop(keys[0], None) + + # the logic below is copied from modules/img2img.py + if mode == 0: + image = api_task_args.pop("init_img") + image = image.convert("RGB") if image else None + mask = None + elif mode == 1: + image = api_task_args.pop("sketch") + image = image.convert("RGB") if image else None + mask = None + elif mode == 2: + init_img_with_mask: Dict = api_task_args.pop("init_img_with_mask") or {} + image = init_img_with_mask.get("image", None) + image = image.convert("RGB") if image else None + mask = init_img_with_mask.get("mask", None) + if mask: + alpha_mask = ( + ImageOps.invert(image.split()[-1]).convert("L").point(lambda x: 255 if x > 0 else 0, mode="1") + ) + mask = ImageChops.lighter(alpha_mask, mask.convert("L")).convert("L") + elif mode == 3: + image = api_task_args.pop("inpaint_color_sketch") + orig = api_task_args.pop("inpaint_color_sketch_orig") or image + if image is not None: + mask_alpha = api_task_args.pop("mask_alpha", 0) + mask_blur = api_task_args.get("mask_blur", 4) + pred = np.any(np.array(image) != np.array(orig), axis=-1) + mask = Image.fromarray(pred.astype(np.uint8) * 255, "L") + mask = ImageEnhance.Brightness(mask).enhance(1 - mask_alpha / 100) + blur = ImageFilter.GaussianBlur(mask_blur) + image = Image.composite(image.filter(blur), orig, mask.filter(blur)) + image = image.convert("RGB") + elif mode == 4: + image = api_task_args.pop("init_img_inpaint") + mask = api_task_args.pop("init_mask_inpaint") + else: + raise Exception(f"Batch mode is not supported yet") + + image = ImageOps.exif_transpose(image) if image else None + api_task_args["init_images"] = [encode_image_to_base64(image)] if image else [] + api_task_args["mask"] = encode_image_to_base64(mask) if mask else None + + selected_scale_tab = api_task_args.pop("selected_scale_tab", 0) + scale_by = api_task_args.get("scale_by", 1) + if selected_scale_tab == 1 and image: + api_task_args["width"] = int(image.width * scale_by) + api_task_args["height"] = int(image.height * scale_by) + else: + hr_sampler_index = api_task_args.pop("hr_sampler_index", 0) + api_task_args["hr_sampler_name"] = ( + sd_samplers.samplers_for_img2img[hr_sampler_index - 1].name if hr_sampler_index != 0 else None + ) + + # script + script_runner = scripts.scripts_img2img if is_img2img else scripts.scripts_txt2img + script_id = script_args[0] + if script_id == 0: + api_task_args["script_name"] = None + api_task_args["script_args"] = [] + else: + script: scripts.Script = script_runner.selectable_scripts[script_id - 1] + api_task_args["script_name"] = script.title().lower() + current_script_args = script_args[script.args_from : script.args_to] + api_task_args["script_args"] = map_script_args_list_to_named(script, current_script_args) + + # alwayson scripts + alwayson_scripts = api_task_args.get("alwayson_scripts", None) + if not alwayson_scripts: + api_task_args["alwayson_scripts"] = {} + alwayson_scripts = api_task_args["alwayson_scripts"] + + for script in script_runner.alwayson_scripts: + alwayson_script_args = script_args[script.args_from : script.args_to] + script_name = script.title().lower() + if script_name != "agent scheduler": + named_script_args = map_script_args_list_to_named(script, alwayson_script_args) + alwayson_scripts[script_name] = {"args": named_script_args} + + return api_task_args + + +def serialize_api_task_args( + params: Dict, + is_img2img: bool, + checkpoint: str = None, + vae: str = None, +) -> Dict: + # handle named script args + script_name = params.get("script_name", None) + if script_name is not None and script_name != "": + script = get_script_by_name(script_name, is_img2img) + if script is None: + raise Exception(f"Not found script {script_name}") + + script_args = params.get("script_args", {}) + params["script_args"] = map_named_script_args_to_list(script, script_args) + + # handle named alwayson script args + alwayson_scripts = get_dict_attribute(params, "alwayson_scripts", {}) + assert type(alwayson_scripts) is dict + + script_runner = scripts.scripts_img2img if is_img2img else scripts.scripts_txt2img + allowed_alwayson_scripts = {s.title().lower(): s for s in script_runner.alwayson_scripts} + + valid_alwayson_scripts = {} + for script_name, script_args in alwayson_scripts.items(): + if script_name.lower() == "agent scheduler": + continue + + if script_name.lower() not in allowed_alwayson_scripts: + log.warning(f"Script {script_name} is not in script_runner.alwayson_scripts") + continue + + script = allowed_alwayson_scripts[script_name.lower()] + script_args = get_dict_attribute(script_args, "args", []) + arg_list = map_named_script_args_to_list(script, script_args) + valid_alwayson_scripts[script_name] = {"args": arg_list} + + params["alwayson_scripts"] = valid_alwayson_scripts + + args = ( + StableDiffusionImg2ImgProcessingAPI(**params) if is_img2img else StableDiffusionTxt2ImgProcessingAPI(**params) + ) + + if args.override_settings is None: + args.override_settings = {} + + if checkpoint is not None: + checkpoint_info: CheckpointInfo = get_closet_checkpoint_match(checkpoint) + if not checkpoint_info: + log.warning(f"Checkpoint {checkpoint} not found, use current system model") + else: + args.override_settings["sd_model_checkpoint"] = checkpoint_info.title + + if vae is not None: + if vae not in sd_vae.vae_dict: + log.warning(f"VAE {vae} not found, use current system vae") + else: + args.override_settings["sd_vae"] = vae + + # load images from url or file if needed + if is_img2img: + init_images = args.init_images + if len(init_images) == 0: + raise Exception("At least one init image is required") + + for i, image in enumerate(init_images): + init_images[i] = encode_image_to_base64(image) + + args.mask = encode_image_to_base64(args.mask) + if len(init_images) > 1: + args.batch_size = len(init_images) + + return args.dict() diff --git a/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/task_runner.py b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/task_runner.py new file mode 100644 index 0000000000000000000000000000000000000000..9b581362f7aeedda1379392b8fcba52e65c211ba --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/agent_scheduler/task_runner.py @@ -0,0 +1,648 @@ +import os +import ctypes +import json +import subprocess +import time +import traceback +import threading +import gradio as gr + +from datetime import datetime, timezone +from pydantic import BaseModel +from typing import Any, Callable, Union, Optional, List, Dict +from fastapi import FastAPI +from PIL import Image + +from modules import progress, shared, script_callbacks +from modules.call_queue import queue_lock, wrap_gradio_call +from modules.txt2img import txt2img +from modules.img2img import img2img +from modules.api.api import Api +from modules.api.models import ( + StableDiffusionTxt2ImgProcessingAPI, + StableDiffusionImg2ImgProcessingAPI, +) + +from .db import TaskStatus, Task, task_manager +from .helpers import ( + log, + detect_control_net, + get_component_by_elem_id, + get_dict_attribute, + is_windows, + is_macos, + _exit, +) +from .task_helpers import ( + encode_image_to_base64, + serialize_img2img_image_args, + deserialize_img2img_image_args, + serialize_script_args, + deserialize_script_args, + serialize_api_task_args, + map_ui_task_args_list_to_named_args, + map_named_args_to_ui_task_args_list, +) + + +class OutOfMemoryError(Exception): + def __init__(self, message="CUDA out of memory") -> None: + self.message = message + super().__init__(message) + + +class FakeRequest: + def __init__(self, username: str = None): + self.username = username + + +class ParsedTaskArgs(BaseModel): + is_ui: bool + named_args: Dict[str, Any] + script_args: List[Any] + checkpoint: Optional[str] = None + vae: Optional[str] = None + + +class TaskRunner: + instance = None + + def __init__(self, UiControlNetUnit=None): + self.UiControlNetUnit = UiControlNetUnit + + self.__total_pending_tasks: int = 0 + self.__current_thread: threading.Thread = None + self.__api = Api(FastAPI(), queue_lock) + + self.__saved_images_path: List[str] = [] + script_callbacks.on_image_saved(self.__on_image_saved) + + self.script_callbacks = { + "task_registered": [], + "task_started": [], + "task_finished": [], + "task_cleared": [], + } + + # Mark this to True when reload UI + self.dispose = False + self.interrupted = None + + if TaskRunner.instance is not None: + raise Exception("TaskRunner instance already exists") + TaskRunner.instance = self + + @property + def current_task_id(self) -> Union[str, None]: + return progress.current_task + + @property + def is_executing_task(self) -> bool: + return self.__current_thread and self.__current_thread.is_alive() + + @property + def paused(self) -> bool: + return getattr(shared.opts, "queue_paused", False) + + def __serialize_ui_task_args( + self, + is_img2img: bool, + *args, + checkpoint: str = None, + vae: str = None, + request: gr.Request = None, + ): + named_args, script_args = map_ui_task_args_list_to_named_args(list(args), is_img2img) + + # loop through named_args and serialize images + if is_img2img: + serialize_img2img_image_args(named_args) + + if "request" in named_args: + named_args["request"] = {"username": request.username} + + params = json.dumps( + { + "args": named_args, + "checkpoint": checkpoint, + "vae": vae, + "is_ui": True, + "is_img2img": is_img2img, + } + ) + script_params = serialize_script_args(script_args) + + return (params, script_params) + + def __serialize_api_task_args( + self, + is_img2img: bool, + checkpoint: str = None, + vae: str = None, + **api_args, + ): + named_args = serialize_api_task_args(api_args, is_img2img, checkpoint=checkpoint, vae=vae) + checkpoint = get_dict_attribute(named_args, "override_settings.sd_model_checkpoint", None) + script_args = named_args.pop("script_args", []) + + params = json.dumps( + { + "args": named_args, + "checkpoint": checkpoint, + "is_ui": False, + "is_img2img": is_img2img, + } + ) + script_params = serialize_script_args(script_args) + return (params, script_params) + + def __deserialize_ui_task_args( + self, + is_img2img: bool, + named_args: Dict, + script_args: List, + checkpoint: str = None, + vae: str = None, + ): + """ + Deserialize UI task arguments + In-place update named_args and script_args + """ + + # Apply checkpoint override + if checkpoint is not None: + override: List[str] = named_args.get("override_settings_texts", []) + override = [x for x in override if not x.startswith("Model hash: ")] + if checkpoint != "System": + override.append("Model hash: " + checkpoint) + named_args["override_settings_texts"] = override + + # Apply VAE override + if vae is not None: + override: List[str] = named_args.get("override_settings_texts", []) + override = [x for x in override if not x.startswith("VAE: ")] + override.append("VAE: " + vae) + named_args["override_settings_texts"] = override + + # A1111 1.5.0-RC has new request field + if "request" in named_args: + named_args["request"] = FakeRequest(**named_args["request"]) + + # loop through image_args and deserialize images + if is_img2img: + deserialize_img2img_image_args(named_args) + + # loop through script_args and deserialize images + script_args = deserialize_script_args(script_args, self.UiControlNetUnit) + + return (named_args, script_args) + + def __deserialize_api_task_args( + self, + is_img2img: bool, + named_args: Dict, + script_args: List, + checkpoint: str = None, + vae: str = None, + ): + # Apply checkpoint override + if checkpoint is not None: + override: Dict = named_args.get("override_settings", {}) + if checkpoint != "System": + override["sd_model_checkpoint"] = checkpoint + else: + override.pop("sd_model_checkpoint", None) + named_args["override_settings"] = override + + # Apply VAE override + if vae is not None: + override: Dict = named_args.get("override_settings", {}) + override["sd_vae"] = vae + named_args["override_settings"] = override + + # load images from disk + if is_img2img: + init_images = named_args.get("init_images") + for i, img in enumerate(init_images): + if isinstance(img, str) and os.path.isfile(img): + image = Image.open(img) + init_images[i] = encode_image_to_base64(image) + + # force image saving + named_args.update({"save_images": True, "send_images": False}) + + script_args = deserialize_script_args(script_args) + return (named_args, script_args) + + def parse_task_args(self, task: Task, deserialization: bool = True): + parsed: Dict[str, Any] = json.loads(task.params) + + is_ui = parsed.get("is_ui", True) + is_img2img = parsed.get("is_img2img", None) + checkpoint = parsed.get("checkpoint", None) + vae = parsed.get("vae", None) + named_args: Dict[str, Any] = parsed["args"] + script_args: List[Any] = parsed.get("script_args", task.script_params) + + if is_ui and deserialization: + named_args, script_args = self.__deserialize_ui_task_args( + is_img2img, named_args, script_args, checkpoint=checkpoint, vae=vae + ) + elif deserialization: + named_args, script_args = self.__deserialize_api_task_args( + is_img2img, named_args, script_args, checkpoint=checkpoint, vae=vae + ) + else: + # ignore script_args if not deserialization + script_args = [] + + return ParsedTaskArgs( + is_ui=is_ui, + named_args=named_args, + script_args=script_args, + checkpoint=checkpoint, + vae=vae, + ) + + def register_ui_task( + self, + task_id: str, + is_img2img: bool, + *args, + checkpoint: str = None, + task_name: str = None, + request: gr.Request = None, + ): + progress.add_task_to_queue(task_id) + + vae = getattr(shared.opts, "sd_vae", "Automatic") + + (params, script_args) = self.__serialize_ui_task_args( + is_img2img, *args, checkpoint=checkpoint, vae=vae, request=request + ) + + task_type = "img2img" if is_img2img else "txt2img" + task = Task( + id=task_id, + name=task_name, + type=task_type, + params=params, + script_params=script_args, + ) + task_manager.add_task(task) + + self.__run_callbacks("task_registered", task_id, is_img2img=is_img2img, is_ui=True, args=params) + self.__total_pending_tasks += 1 + + return task + + def register_api_task( + self, + task_id: str, + api_task_id: str, + is_img2img: bool, + args: Dict, + checkpoint: str = None, + vae: str = None, + ): + progress.add_task_to_queue(task_id) + + (params, script_params) = self.__serialize_api_task_args(is_img2img, checkpoint=checkpoint, vae=vae, **args) + + task_type = "img2img" if is_img2img else "txt2img" + task = Task( + id=task_id, + api_task_id=api_task_id, + type=task_type, + params=params, + script_params=script_params, + ) + task_manager.add_task(task) + + self.__run_callbacks("task_registered", task_id, is_img2img=is_img2img, is_ui=False, args=params) + self.__total_pending_tasks += 1 + + return task + + def execute_task(self, task: Task, get_next_task: Callable[[], Task]): + while True: + if self.dispose: + break + + if progress.current_task is None: + task_id = task.id + is_img2img = task.type == "img2img" + log.info(f"[AgentScheduler] Executing task {task_id}") + + task_args = self.parse_task_args(task) + task_meta = { + "is_img2img": is_img2img, + "is_ui": task_args.is_ui, + "task": task, + } + + self.interrupted = None + self.__saved_images_path = [] + self.__run_callbacks("task_started", task_id, **task_meta) + + # enable image saving + samples_save = shared.opts.samples_save + shared.opts.samples_save = True + + res = self.__execute_task(task_id, is_img2img, task_args) + + # disable image saving + shared.opts.samples_save = samples_save + + if not res or isinstance(res, Exception): + if isinstance(res, OutOfMemoryError): + log.error(f"[AgentScheduler] Task {task_id} failed: CUDA OOM. Queue will be paused.") + shared.opts.queue_paused = True + else: + log.error(f"[AgentScheduler] Task {task_id} failed: {res}") + log.debug(traceback.format_exc()) + + if getattr(shared.opts, "queue_automatic_requeue_failed_task", False): + log.info(f"[AgentScheduler] Requeue task {task_id}") + task.status = TaskStatus.PENDING + task.priority = int(datetime.now(timezone.utc).timestamp() * 1000) + task_manager.update_task(task) + else: + task.status = TaskStatus.FAILED + task.result = str(res) if res else None + task_manager.update_task(task) + self.__run_callbacks("task_finished", task_id, status=TaskStatus.FAILED, **task_meta) + else: + is_interrupted = self.interrupted == task_id + if is_interrupted: + log.info(f"\n[AgentScheduler] Task {task.id} interrupted") + task.status = TaskStatus.INTERRUPTED + task_manager.update_task(task) + self.__run_callbacks( + "task_finished", + task_id, + status=TaskStatus.INTERRUPTED, + **task_meta, + ) + else: + geninfo = json.loads(res) + result = { + "images": self.__saved_images_path.copy(), + "geninfo": geninfo, + } + + task.status = TaskStatus.DONE + task.result = json.dumps(result) + task_manager.update_task(task) + self.__run_callbacks( + "task_finished", + task_id, + status=TaskStatus.DONE, + result=result, + **task_meta, + ) + + self.__saved_images_path = [] + else: + time.sleep(2) + continue + + task = get_next_task() + if not task: + if not self.paused: + time.sleep(1) + self.__on_completed() + break + + def execute_pending_tasks_threading(self): + if self.paused: + log.info("[AgentScheduler] Runner is paused") + return + + if self.is_executing_task: + log.info("[AgentScheduler] Runner already started") + return + + pending_task = self.__get_pending_task() + if pending_task: + # Start the infinite loop in a separate thread + self.__current_thread = threading.Thread( + target=self.execute_task, + args=( + pending_task, + self.__get_pending_task, + ), + ) + self.__current_thread.daemon = True + self.__current_thread.start() + + def __execute_task(self, task_id: str, is_img2img: bool, task_args: ParsedTaskArgs): + if task_args.is_ui: + ui_args = map_named_args_to_ui_task_args_list(task_args.named_args, task_args.script_args, is_img2img) + + return self.__execute_ui_task(task_id, is_img2img, *ui_args) + else: + return self.__execute_api_task( + task_id, + is_img2img, + script_args=task_args.script_args, + **task_args.named_args, + ) + + def __execute_ui_task(self, task_id: str, is_img2img: bool, *args): + func = wrap_gradio_call(img2img if is_img2img else txt2img, add_stats=True) + + with queue_lock: + shared.state.begin() + progress.start_task(task_id) + + res = None + try: + result = func(*args) + if result[0] is None and hasattr(shared.state, "oom") and shared.state.oom: + res = OutOfMemoryError() + elif "CUDA out of memory" in result[2]: + res = OutOfMemoryError() + else: + res = result[1] + except Exception as e: + res = e + finally: + progress.finish_task(task_id) + + shared.state.end() + + return res + + def __execute_api_task(self, task_id: str, is_img2img: bool, **kwargs): + progress.start_task(task_id) + + res = None + try: + result = ( + self.__api.img2imgapi(StableDiffusionImg2ImgProcessingAPI(**kwargs)) + if is_img2img + else self.__api.text2imgapi(StableDiffusionTxt2ImgProcessingAPI(**kwargs)) + ) + res = result.info + except Exception as e: + if "CUDA out of memory" in str(e): + res = OutOfMemoryError() + else: + res = e + finally: + progress.finish_task(task_id) + + return res + + def __get_pending_task(self): + if self.dispose: + return None + + if self.paused: + log.info("[AgentScheduler] Runner is paused") + return None + + # # delete task that are too old + # retention_days = 30 + # if ( + # getattr(shared.opts, "queue_history_retention_days", None) + # and shared.opts.queue_history_retention_days in task_history_retenion_map + # ): + # retention_days = task_history_retenion_map[shared.opts.queue_history_retention_days] + + # if retention_days > 0: + # deleted_rows = task_manager.delete_tasks(before=datetime.now() - timedelta(days=retention_days)) + # if deleted_rows > 0: + # log.debug(f"[AgentScheduler] Deleted {deleted_rows} tasks older than {retention_days} days") + + self.__total_pending_tasks = task_manager.count_tasks(status="pending") + + # get more task if needed + if self.__total_pending_tasks > 0: + log.info(f"[AgentScheduler] Total pending tasks: {self.__total_pending_tasks}") + pending_tasks = task_manager.get_tasks(status="pending", limit=1) + if len(pending_tasks) > 0: + return pending_tasks[0] + else: + log.info("[AgentScheduler] Task queue is empty") + self.__run_callbacks("task_cleared") + + def __on_image_saved(self, data: script_callbacks.ImageSaveParams): + if self.current_task_id is None: + return + + outpath_grids = shared.opts.outdir_grids or shared.opts.outdir_txt2img_grids + if data.filename.startswith(outpath_grids): + self.__saved_images_path.insert(0, data.filename) + else: + self.__saved_images_path.append(data.filename) + + def __on_completed(self): + action = getattr(shared.opts, "queue_completion_action", "Do nothing") + + if action == "Do nothing": + return + + command = None + if action == "Shut down": + log.info("[AgentScheduler] Shutting down...") + if is_windows: + command = ["shutdown", "/s", "/hybrid", "/t", "0"] + elif is_macos: + command = ["osascript", "-e", 'tell application "Finder" to shut down'] + else: + command = ["systemctl", "poweroff"] + elif action == "Restart": + log.info("[AgentScheduler] Restarting...") + if is_windows: + command = ["shutdown", "/r", "/t", "0"] + elif is_macos: + command = ["osascript", "-e", 'tell application "Finder" to restart'] + else: + command = ["systemctl", "reboot"] + elif action == "Sleep": + log.info("[AgentScheduler] Sleeping...") + if is_windows: + if not ctypes.windll.PowrProf.SetSuspendState(False, False, False): + print(f"Couldn't sleep: {ctypes.GetLastError()}") + elif is_macos: + command = ["osascript", "-e", 'tell application "Finder" to sleep'] + else: + command = ["sh", "-c", 'systemctl hybrid-sleep || (echo "Couldn\'t hybrid sleep, will try to suspend instead: $?"; systemctl suspend)'] + elif action == "Hibernate": + log.info("[AgentScheduler] Hibernating...") + if is_windows: + command = ["shutdown", "/h"] + elif is_macos: + command = ["osascript", "-e", 'tell application "Finder" to sleep'] + else: + command = ["systemctl", "hibernate"] + elif action == "Stop webui": + log.info("[AgentScheduler] Stopping webui...") + _exit(0) + + if command: + subprocess.Popen(command) + + if action in {"Shut down", "Restart"}: + _exit(0) + + def on_task_registered(self, callback: Callable): + """Callback when a task is registered + + Callback signature: callback(task_id: str, is_img2img: bool, is_ui: bool, args: Dict) + """ + + self.script_callbacks["task_registered"].append(callback) + + def on_task_started(self, callback: Callable): + """Callback when a task is started + + Callback signature: callback(task_id: str, is_img2img: bool, is_ui: bool) + """ + + self.script_callbacks["task_started"].append(callback) + + def on_task_finished(self, callback: Callable): + """Callback when a task is finished + + Callback signature: callback(task_id: str, is_img2img: bool, is_ui: bool, status: TaskStatus, result: Dict) + """ + + self.script_callbacks["task_finished"].append(callback) + + def on_task_cleared(self, callback: Callable): + self.script_callbacks["task_cleared"].append(callback) + + def __run_callbacks(self, name: str, *args, **kwargs): + for callback in self.script_callbacks[name]: + callback(*args, **kwargs) + + +def get_instance(block) -> TaskRunner: + if TaskRunner.instance is None: + if block is not None: + txt2img_submit_button = get_component_by_elem_id(block, "txt2img_generate") + UiControlNetUnit = detect_control_net(block, txt2img_submit_button) + TaskRunner(UiControlNetUnit) + else: + TaskRunner() + + if not hasattr(script_callbacks, "on_before_reload"): + log.warning( + "*****************************************************************************************\n" + + "[AgentScheduler] YOUR SD WEBUI IS OUTDATED AND AGENT SCHEDULER WILL NOT WORKING PROPERLY." + + "*****************************************************************************************\n", + ) + else: + + def on_before_reload(): + # Tell old instance to stop + TaskRunner.instance.dispose = True + # force recreate the instance + TaskRunner.instance = None + + script_callbacks.on_before_reload(on_before_reload) + + return TaskRunner.instance diff --git a/extensions-builtin/sd-webui-agent-scheduler/docs/CHANGELOG.md b/extensions-builtin/sd-webui-agent-scheduler/docs/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..2a85cfab275858e3e4cb10b9edf7a53631292931 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/docs/CHANGELOG.md @@ -0,0 +1,111 @@ +# Change Logs + +## 2023/08/10 + +New features: +- New API `/task/{id}/position` to get task position in queue [#105](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/105) +- Display task in local timezone [#95](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/95) + +Bugs fixing: +- `alwayson_scripts` should allow script name in all cases [#102](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/102) +- Fix `script_args` not working when queue task via API [#103](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/103) + +## 2023/08/02 + +Bugs fixing: +- Fix task_id is duplicated [#97](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/97) +- Fix [#100](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/100) + +## 2023/07/25 + +New features: +- Clear queue and clear history +- Queue task with specific name & queue with all checkpoints [#88](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/88) + +## 2023/07/24 + +New features: +- New API `/task/{id}` to get single task (https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/86) +- Update queued task +- Minor change to support changes in SD webui 1.5.0-RC + +Bugs fixing: +- Fixed https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/87 + +## 2023/07/16 + +- Use pickle to serialize script args +- Fix task re-ordering not working [#79](https://github.com/ArtVentureX/sd-webui-agent-scheduler/issues/79) + +## 2023/07/12 + +- Fix: batch_size is ignored when queue img2img task via api + +## 2023/07/11 + +- Add clip_skip to queue params +- Add support for api task callback + +## 2023/06/29 + +- Switch js format to iife +- Bugs fixing + +## 2023/06/23 + +- Add setting to disable keyboard shortcut +- Bugs fixing + +## 2023/06/21 + +- Add enqueue keyboard shortcut +- Bugs fixing + +## 2023/06/20 + +- Add api to download task's generated images +- Add setting to render extension UI below the main UI +- Display task datetime in local timezone +- Persist the grid state (columns order, sorting) for next session +- Bugs fixing + +## 2023/06/07 + +- Re-organize folder structure for better loading time +- Prevent duplicate ui initialization +- Prevent unnecessary data refresh + +## 2023/06/06 + +- Force image saving when run task +- Auto pause queue when OOM error detected + +## 2023/06/05 + +- Able to view queue history +- Bookmark task +- Rename task +- Requeue a task +- View generated images of a task +- Send generation params directly to txt2img, img2img +- Add apis to queue task +- Bugs fixing + +## 2023/06/02 + +- Remove the queue placement option `Above Generate Button` +- Make the grid height scale with window resize +- Keep the previous generation result when click enqueue +- Fix: unable to run a specific task when queue is paused + +## 2023/06/01 + +- Add a flag to enable/disable queue auto processing +- Add queue button placement setting +- Add a flag to hide the custom checkpoint select +- Rewrite frontend code in typescript +- Bugs fixing + +## 2023/05/29 + +- First release diff --git a/extensions-builtin/sd-webui-agent-scheduler/docs/images/install.png b/extensions-builtin/sd-webui-agent-scheduler/docs/images/install.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd91d4ac92e1f932aeca6212b4b8bb188c053cc Binary files /dev/null and b/extensions-builtin/sd-webui-agent-scheduler/docs/images/install.png differ diff --git a/extensions-builtin/sd-webui-agent-scheduler/docs/images/settings.png b/extensions-builtin/sd-webui-agent-scheduler/docs/images/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..f77c9eb745c30d462210511cf924d0e6864e34a1 Binary files /dev/null and b/extensions-builtin/sd-webui-agent-scheduler/docs/images/settings.png differ diff --git a/extensions-builtin/sd-webui-agent-scheduler/docs/images/walkthrough.png b/extensions-builtin/sd-webui-agent-scheduler/docs/images/walkthrough.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2a1fcbaba4808642a8ba0db30ace72ad58064d --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/docs/images/walkthrough.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6907230606b68e1f79aa67adc371475062b134d6ae66ef6d7775ab30804521c +size 2074133 diff --git a/extensions-builtin/sd-webui-agent-scheduler/install.py b/extensions-builtin/sd-webui-agent-scheduler/install.py new file mode 100644 index 0000000000000000000000000000000000000000..900291667811597f1562badb8d45546344f67295 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/install.py @@ -0,0 +1,4 @@ +import launch + +if not launch.is_installed("sqlalchemy"): + launch.run_pip("install sqlalchemy", "requirement for task-scheduler") diff --git a/extensions-builtin/sd-webui-agent-scheduler/javascript/agent-scheduler.iife.js b/extensions-builtin/sd-webui-agent-scheduler/javascript/agent-scheduler.iife.js new file mode 100644 index 0000000000000000000000000000000000000000..9135cc6f96bec46e7f54a27ff332a972a7371766 --- /dev/null +++ b/extensions-builtin/sd-webui-agent-scheduler/javascript/agent-scheduler.iife.js @@ -0,0 +1,355 @@ +(function(){"use strict";/** + * @ag-grid-community/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue * @version v31.1.1 + * @link https://www.ag-grid.com/ + * @license MIT + */function ct(n){return n==null||n===""?null:n}function P(n,t){return t===void 0&&(t=!1),n!=null&&(n!==""||t)}function H(n){return!P(n)}function Ge(n){return n==null||n.length===0}function zr(n){return n!=null&&typeof n.toString=="function"?n.toString():null}function Mt(n){if(n!==void 0){if(n===null||n==="")return null;if(typeof n=="number")return isNaN(n)?void 0:n;var t=parseInt(n,10);return isNaN(t)?void 0:t}}function xo(n){if(n!==void 0)return n===null||n===""?!1:typeof n=="boolean"?n:/true/i.test(n)}function yc(n){if(!(n==null||n===""))return n}function Yi(n,t){var e=n?JSON.stringify(n):null,r=t?JSON.stringify(t):null;return e===r}function mc(n,t,e){e===void 0&&(e=!1);var r=n==null,o=t==null;if(n&&n.toNumber&&(n=n.toNumber()),t&&t.toNumber&&(t=t.toNumber()),r&&o)return 0;if(r)return-1;if(o)return 1;function i(s,a){return s>a?1:s=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Ec=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i};function ye(n,t){var e,r;if(n!=null){if(Array.isArray(n)){for(var o=0;o=0)){var i=e[o],s=Go(i)&&i.constructor===Object;s?r[o]=No(i):r[o]=i}}),r}}function It(n){if(!n)return[];var t=Object;if(typeof t.values=="function")return t.values(n);var e=[];for(var r in n)n.hasOwnProperty(r)&&n.propertyIsEnumerable(r)&&e.push(n[r]);return e}function Ve(n,t,e,r){e===void 0&&(e=!0),r===void 0&&(r=!1),P(t)&&ye(t,function(o,i){var s=n[o];if(s!==i){if(r){var a=s==null&&i!=null;if(a){var l=typeof i=="object"&&i.constructor===Object,u=l;u&&(s={},n[o]=s)}}Go(i)&&Go(s)&&!Array.isArray(s)?Ve(s,i,e,r):(e||i!==void 0)&&(n[o]=i)}})}function wr(n,t,e){if(!(!t||!n)){if(!e)return n[t];for(var r=t.split("."),o=n,i=0;i0&&window.setTimeout(function(){return n.forEach(function(e){return e()})},t)}function He(n,t){var e;return function(){for(var r=[],o=0;oe;(n()||l)&&(t(),s=!0,i!=null&&(window.clearInterval(i),i=null),l&&r&&console.warn(r))};a(),s||(i=window.setInterval(a,10))}function Rc(){for(var n=[],t=0;t0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},fa=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r<\/script> + +For more info see: https://ag-grid.com/javascript-data-grid/getting-started/#getting-started-with-ag-grid-enterprise`);else if(n.moduleBased||n.moduleBased===void 0){var a=(o=Object.entries(G).find(function(l){var u=Kr(l,2);u[0];var c=u[1];return c===t}))===null||o===void 0?void 0:o[0];s="AG Grid: unable to use ".concat(e," as the ").concat(a," is not registered").concat(n.areGridScopedModules?" for gridId: ".concat(r):"",`. Check if you have registered the module: + + import { ModuleRegistry } from '@ag-grid-community/core'; + import { `).concat(a," } from '").concat(t,`'; + + ModuleRegistry.registerModules([ `).concat(a,` ]); + +For more info see: https://www.ag-grid.com/javascript-grid/modules/`)}else s="AG Grid: unable to use ".concat(e,` as package 'ag-grid-enterprise' has not been imported. Check that you have imported the package: + + import 'ag-grid-enterprise'; + +For more info see: https://www.ag-grid.com/javascript-grid/packages/`);return er(function(){console.warn(s)},i),!1},n.__warnEnterpriseChartDisabled=function(t){var e="ag-charts-enterprise",r=e+":"+t,o="https://ag-grid.com/javascript-data-grid/integrated-charts/",i="AG Grid: the '".concat(t,"' chart type is not supported in AG Charts Community. See ").concat(o," for more details.");er(function(){console.warn(i)},r)},n.__isRegistered=function(t,e){var r;return!!n.globalModulesMap[t]||!!(!((r=n.gridModulesMap[e])===null||r===void 0)&&r[t])},n.__getRegisteredModules=function(t){return fa(fa([],Kr(Zt(n.globalModulesMap)),!1),Kr(Zt(n.gridModulesMap[t]||{})),!1)},n.__getGridRegisteredModules=function(t){var e;return Zt((e=n.gridModulesMap[t])!==null&&e!==void 0?e:{})||[]},n.__isPackageBased=function(){return!n.moduleBased},n.globalModulesMap={},n.gridModulesMap={},n.areGridScopedModules=!1,n}(),Pc=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Dc=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r> creating ag-Application Context"),this.createBeans();var r=this.getBeanInstances();this.wireBeans(r),this.logger.log(">> ag-Application Context ready - component is alive")}}return n.prototype.getBeanInstances=function(){return Zt(this.beanWrappers).map(function(t){return t.beanInstance})},n.prototype.createBean=function(t,e){if(!t)throw Error("Can't wire to bean since it is null");return this.wireBeans([t],e),t},n.prototype.wireBeans=function(t,e){this.autoWireBeans(t),this.methodWireBeans(t),this.callLifeCycleMethods(t,"preConstructMethods"),P(e)&&t.forEach(e),this.callLifeCycleMethods(t,"postConstructMethods")},n.prototype.createBeans=function(){var t=this;this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this)),ye(this.beanWrappers,function(r,o){var i;o.bean.__agBeanMetaData&&o.bean.__agBeanMetaData.autowireMethods&&o.bean.__agBeanMetaData.autowireMethods.agConstructor&&(i=o.bean.__agBeanMetaData.autowireMethods.agConstructor);var s=t.getBeansForParameters(i,o.bean.name),a=new(o.bean.bind.apply(o.bean,Dc([null],Pc(s),!1)));o.beanInstance=a});var e=Object.keys(this.beanWrappers).join(", ");this.logger.log("created beans: ".concat(e))},n.prototype.createBeanWrapper=function(t){var e=t.__agBeanMetaData;if(!e){var r=void 0;t.prototype.constructor?r=Vo(t.prototype.constructor):r=""+t,console.error("Context item ".concat(r," is not a bean"));return}var o={bean:t,beanInstance:null,beanName:e.beanName};this.beanWrappers[e.beanName]=o},n.prototype.autoWireBeans=function(t){var e=this;t.forEach(function(r){e.forEachMetaDataInHierarchy(r,function(o,i){var s=o.agClassAttributes;s&&s.forEach(function(a){var l=e.lookupBeanInstance(i,a.beanName,a.optional);r[a.attributeName]=l})})})},n.prototype.methodWireBeans=function(t){var e=this;t.forEach(function(r){e.forEachMetaDataInHierarchy(r,function(o,i){ye(o.autowireMethods,function(s,a){if(s!=="agConstructor"){var l=e.getBeansForParameters(a,i);r[s].apply(r,l)}})})})},n.prototype.forEachMetaDataInHierarchy=function(t,e){for(var r=Object.getPrototypeOf(t);r!=null;){var o=r.constructor;if(o.hasOwnProperty("__agBeanMetaData")){var i=o.__agBeanMetaData,s=this.getBeanName(o);e(i,s)}r=Object.getPrototypeOf(r)}},n.prototype.getBeanName=function(t){if(t.__agBeanMetaData&&t.__agBeanMetaData.beanName)return t.__agBeanMetaData.beanName;var e=t.toString(),r=e.substring(9,e.indexOf("("));return r},n.prototype.getBeansForParameters=function(t,e){var r=this,o=[];return t&&ye(t,function(i,s){var a=r.lookupBeanInstance(e,s);o[Number(i)]=a}),o},n.prototype.lookupBeanInstance=function(t,e,r){if(r===void 0&&(r=!1),this.destroyed)return this.logger.log("AG Grid: bean reference ".concat(e," is used after the grid is destroyed!")),null;if(e==="context")return this;if(this.contextParams.providedBeanInstances&&this.contextParams.providedBeanInstances.hasOwnProperty(e))return this.contextParams.providedBeanInstances[e];var o=this.beanWrappers[e];return o?o.beanInstance:(r||console.error("AG Grid: unable to find bean reference ".concat(e," while initialising ").concat(t)),null)},n.prototype.callLifeCycleMethods=function(t,e){var r=this;t.forEach(function(o){return r.callLifeCycleMethodsOnBean(o,e)})},n.prototype.callLifeCycleMethodsOnBean=function(t,e,r){var o={};this.forEachMetaDataInHierarchy(t,function(s){var a=s[e];a&&a.forEach(function(l){l!=r&&(o[l]=!0)})});var i=Object.keys(o);i.forEach(function(s){return t[s]()})},n.prototype.getBean=function(t){return this.lookupBeanInstance("getBean",t,!0)},n.prototype.destroy=function(){if(!this.destroyed){this.destroyed=!0,this.logger.log(">> Shutting down ag-Application Context");var t=this.getBeanInstances();this.destroyBeans(t),this.contextParams.providedBeanInstances=null,X.__unRegisterGridModules(this.contextParams.gridId),this.logger.log(">> ag-Application Context shut down - component is dead")}},n.prototype.destroyBean=function(t){t&&this.destroyBeans([t])},n.prototype.destroyBeans=function(t){var e=this;return t?(t.forEach(function(r){e.callLifeCycleMethodsOnBean(r,"preDestroyMethods","destroy");var o=r;typeof o.destroy=="function"&&o.destroy()}),[]):[]},n.prototype.isDestroyed=function(){return this.destroyed},n.prototype.getGridId=function(){return this.contextParams.gridId},n}();function va(n,t,e){var r=tr(n.constructor);r.preConstructMethods||(r.preConstructMethods=[]),r.preConstructMethods.push(t)}function F(n,t,e){var r=tr(n.constructor);r.postConstructMethods||(r.postConstructMethods=[]),r.postConstructMethods.push(t)}function Se(n,t,e){var r=tr(n.constructor);r.preDestroyMethods||(r.preDestroyMethods=[]),r.preDestroyMethods.push(t)}function x(n){return function(t){var e=tr(t);e.beanName=n}}function v(n){return function(t,e,r){ga(t,n,!1,t,e,null)}}function Y(n){return function(t,e,r){ga(t,n,!0,t,e,null)}}function ga(n,t,e,r,o,i){if(t===null){console.error("AG Grid: Autowired name should not be null");return}if(typeof i=="number"){console.error("AG Grid: Autowired should be on an attribute");return}var s=tr(n.constructor);s.agClassAttributes||(s.agClassAttributes=[]),s.agClassAttributes.push({attributeName:o,beanName:t,optional:e})}function Ye(n){return function(t,e,r){var o=typeof t=="function"?t:t.constructor,i;if(typeof r=="number"){var s=void 0;e?(i=tr(o),s=e):(i=tr(o),s="agConstructor"),i.autowireMethods||(i.autowireMethods={}),i.autowireMethods[s]||(i.autowireMethods[s]={}),i.autowireMethods[s][r]=n}}}function tr(n){return n.hasOwnProperty("__agBeanMetaData")||(n.__agBeanMetaData={}),n.__agBeanMetaData}var ya=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Bo=function(n,t){return function(e,r){t(e,r,n)}},xt=function(){function n(){this.allSyncListeners=new Map,this.allAsyncListeners=new Map,this.globalSyncListeners=new Set,this.globalAsyncListeners=new Set,this.asyncFunctionsQueue=[],this.scheduled=!1,this.firedEvents={}}return n.prototype.setBeans=function(t,e,r,o){if(r===void 0&&(r=null),o===void 0&&(o=null),this.frameworkOverrides=e,this.gridOptionsService=t,r){var i=t.useAsyncEvents();this.addGlobalListener(r,i)}o&&this.addGlobalListener(o,!1)},n.prototype.setFrameworkOverrides=function(t){this.frameworkOverrides=t},n.prototype.getListeners=function(t,e,r){var o=e?this.allAsyncListeners:this.allSyncListeners,i=o.get(t);return!i&&r&&(i=new Set,o.set(t,i)),i},n.prototype.noRegisteredListenersExist=function(){return this.allSyncListeners.size===0&&this.allAsyncListeners.size===0&&this.globalSyncListeners.size===0&&this.globalAsyncListeners.size===0},n.prototype.addEventListener=function(t,e,r){r===void 0&&(r=!1),this.getListeners(t,r,!0).add(e)},n.prototype.removeEventListener=function(t,e,r){r===void 0&&(r=!1);var o=this.getListeners(t,r,!1);if(o&&(o.delete(e),o.size===0)){var i=r?this.allAsyncListeners:this.allSyncListeners;i.delete(t)}},n.prototype.addGlobalListener=function(t,e){e===void 0&&(e=!1),(e?this.globalAsyncListeners:this.globalSyncListeners).add(t)},n.prototype.removeGlobalListener=function(t,e){e===void 0&&(e=!1),(e?this.globalAsyncListeners:this.globalSyncListeners).delete(t)},n.prototype.dispatchEvent=function(t){var e=t;this.gridOptionsService&&this.gridOptionsService.addGridCommonParams(e),this.dispatchToListeners(e,!0),this.dispatchToListeners(e,!1),this.firedEvents[e.type]=!0},n.prototype.dispatchEventOnce=function(t){this.firedEvents[t.type]||this.dispatchEvent(t)},n.prototype.dispatchToListeners=function(t,e){var r=this,o,i=t.type;if(e&&"event"in t){var s=t.event;s instanceof Event&&(t.eventPath=s.composedPath())}var a=function(p,d){return p.forEach(function(h){if(d.has(h)){var f=r.frameworkOverrides?function(){return r.frameworkOverrides.wrapIncoming(function(){return h(t)})}:function(){return h(t)};e?r.dispatchAsync(f):f()}})},l=(o=this.getListeners(i,e,!1))!==null&&o!==void 0?o:new Set,u=new Set(l);u.size>0&&a(u,l);var c=new Set(e?this.globalAsyncListeners:this.globalSyncListeners);c.forEach(function(p){var d=r.frameworkOverrides?function(){return r.frameworkOverrides.wrapIncoming(function(){return p(i,t)})}:function(){return p(i,t)};e?r.dispatchAsync(d):d()})},n.prototype.dispatchAsync=function(t){var e=this;this.asyncFunctionsQueue.push(t),this.scheduled||(this.frameworkOverrides.wrapIncoming(function(){window.setTimeout(e.flushAsyncQueue.bind(e),0)}),this.scheduled=!0)},n.prototype.flushAsyncQueue=function(){this.scheduled=!1;var t=this.asyncFunctionsQueue.slice();this.asyncFunctionsQueue=[],t.forEach(function(e){return e()})},ya([Bo(0,Ye("gridOptionsService")),Bo(1,Ye("frameworkOverrides")),Bo(2,Ye("globalEventListener")),Bo(3,Ye("globalSyncEventListener"))],n.prototype,"setBeans",null),n=ya([x("eventService")],n),n}(),tn=function(){function n(t){this.frameworkOverrides=t,this.wrappedListeners=new Map,this.wrappedGlobalListeners=new Map}return n.prototype.wrap=function(t){var e=this,r=t;return this.frameworkOverrides.shouldWrapOutgoing&&(r=function(o){e.frameworkOverrides.wrapOutgoing(function(){return t(o)})},this.wrappedListeners.set(t,r)),r},n.prototype.wrapGlobal=function(t){var e=this,r=t;return this.frameworkOverrides.shouldWrapOutgoing&&(r=function(o,i){e.frameworkOverrides.wrapOutgoing(function(){return t(o,i)})},this.wrappedGlobalListeners.set(t,r)),r},n.prototype.unwrap=function(t){var e;return(e=this.wrappedListeners.get(t))!==null&&e!==void 0?e:t},n.prototype.unwrapGlobal=function(t){var e;return(e=this.wrappedGlobalListeners.get(t))!==null&&e!==void 0?e:t},n}(),$r=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},bc={resizable:!0,sortable:!0},Fc=0;function ma(){return Fc++}var J=function(){function n(t,e,r,o){this.instanceId=ma(),this.autoHeaderHeight=null,this.moving=!1,this.menuVisible=!1,this.lastLeftPinned=!1,this.firstRightPinned=!1,this.filterActive=!1,this.eventService=new xt,this.tooltipEnabled=!1,this.rowGroupActive=!1,this.pivotActive=!1,this.aggregationActive=!1,this.colDef=t,this.userProvidedColDef=e,this.colId=r,this.primary=o,this.setState(t)}return n.prototype.getInstanceId=function(){return this.instanceId},n.prototype.setState=function(t){t.sort!==void 0?(t.sort==="asc"||t.sort==="desc")&&(this.sort=t.sort):(t.initialSort==="asc"||t.initialSort==="desc")&&(this.sort=t.initialSort);var e=t.sortIndex,r=t.initialSortIndex;e!==void 0?e!==null&&(this.sortIndex=e):r!==null&&(this.sortIndex=r);var o=t.hide,i=t.initialHide;o!==void 0?this.visible=!o:this.visible=!i,t.pinned!==void 0?this.setPinned(t.pinned):this.setPinned(t.initialPinned);var s=t.flex,a=t.initialFlex;s!==void 0?this.flex=s:a!==void 0&&(this.flex=a)},n.prototype.setColDef=function(t,e,r){this.colDef=t,this.userProvidedColDef=e,this.initMinAndMaxWidths(),this.initDotNotation(),this.initTooltip(),this.eventService.dispatchEvent(this.createColumnEvent("colDefChanged",r))},n.prototype.getUserProvidedColDef=function(){return this.userProvidedColDef},n.prototype.setParent=function(t){this.parent=t},n.prototype.getParent=function(){return this.parent},n.prototype.setOriginalParent=function(t){this.originalParent=t},n.prototype.getOriginalParent=function(){return this.originalParent},n.prototype.initialise=function(){this.initMinAndMaxWidths(),this.resetActualWidth("gridInitializing"),this.initDotNotation(),this.initTooltip()},n.prototype.initDotNotation=function(){var t=this.gridOptionsService.get("suppressFieldDotNotation");this.fieldContainsDots=P(this.colDef.field)&&this.colDef.field.indexOf(".")>=0&&!t,this.tooltipFieldContainsDots=P(this.colDef.tooltipField)&&this.colDef.tooltipField.indexOf(".")>=0&&!t},n.prototype.initMinAndMaxWidths=function(){var t=this.colDef;this.minWidth=this.columnUtils.calculateColMinWidth(t),this.maxWidth=this.columnUtils.calculateColMaxWidth(t)},n.prototype.initTooltip=function(){this.tooltipEnabled=P(this.colDef.tooltipField)||P(this.colDef.tooltipValueGetter)||P(this.colDef.tooltipComponent)},n.prototype.resetActualWidth=function(t){var e=this.columnUtils.calculateColInitialWidth(this.colDef);this.setActualWidth(e,t,!0)},n.prototype.isEmptyGroup=function(){return!1},n.prototype.isRowGroupDisplayed=function(t){if(H(this.colDef)||H(this.colDef.showRowGroup))return!1;var e=this.colDef.showRowGroup===!0,r=this.colDef.showRowGroup===t;return e||r},n.prototype.isPrimary=function(){return this.primary},n.prototype.isFilterAllowed=function(){var t=!!this.colDef.filter;return t},n.prototype.isFieldContainsDots=function(){return this.fieldContainsDots},n.prototype.isTooltipEnabled=function(){return this.tooltipEnabled},n.prototype.isTooltipFieldContainsDots=function(){return this.tooltipFieldContainsDots},n.prototype.addEventListener=function(t,e){var r,o;this.frameworkOverrides.shouldWrapOutgoing&&!this.frameworkEventListenerService&&(this.eventService.setFrameworkOverrides(this.frameworkOverrides),this.frameworkEventListenerService=new tn(this.frameworkOverrides));var i=(o=(r=this.frameworkEventListenerService)===null||r===void 0?void 0:r.wrap(e))!==null&&o!==void 0?o:e;this.eventService.addEventListener(t,i)},n.prototype.removeEventListener=function(t,e){var r,o,i=(o=(r=this.frameworkEventListenerService)===null||r===void 0?void 0:r.unwrap(e))!==null&&o!==void 0?o:e;this.eventService.removeEventListener(t,i)},n.prototype.createColumnFunctionCallbackParams=function(t){return this.gridOptionsService.addGridCommonParams({node:t,data:t.data,column:this,colDef:this.colDef})},n.prototype.isSuppressNavigable=function(t){if(typeof this.colDef.suppressNavigable=="boolean")return this.colDef.suppressNavigable;if(typeof this.colDef.suppressNavigable=="function"){var e=this.createColumnFunctionCallbackParams(t),r=this.colDef.suppressNavigable;return r(e)}return!1},n.prototype.isCellEditable=function(t){return t.group&&!this.gridOptionsService.get("enableGroupEdit")?!1:this.isColumnFunc(t,this.colDef.editable)},n.prototype.isSuppressFillHandle=function(){return!!this.colDef.suppressFillHandle},n.prototype.isAutoHeight=function(){return!!this.colDef.autoHeight},n.prototype.isAutoHeaderHeight=function(){return!!this.colDef.autoHeaderHeight},n.prototype.isRowDrag=function(t){return this.isColumnFunc(t,this.colDef.rowDrag)},n.prototype.isDndSource=function(t){return this.isColumnFunc(t,this.colDef.dndSource)},n.prototype.isCellCheckboxSelection=function(t){return this.isColumnFunc(t,this.colDef.checkboxSelection)},n.prototype.isSuppressPaste=function(t){return this.isColumnFunc(t,this.colDef?this.colDef.suppressPaste:null)},n.prototype.isResizable=function(){return!!this.getColDefValue("resizable")},n.prototype.getColDefValue=function(t){var e;return(e=this.colDef[t])!==null&&e!==void 0?e:bc[t]},n.prototype.isColumnFunc=function(t,e){if(typeof e=="boolean")return e;if(typeof e=="function"){var r=this.createColumnFunctionCallbackParams(t),o=e;return o(r)}return!1},n.prototype.setMoving=function(t,e){this.moving=t,this.eventService.dispatchEvent(this.createColumnEvent("movingChanged",e))},n.prototype.createColumnEvent=function(t,e){return this.gridOptionsService.addGridCommonParams({type:t,column:this,columns:[this],source:e})},n.prototype.isMoving=function(){return this.moving},n.prototype.getSort=function(){return this.sort},n.prototype.setSort=function(t,e){this.sort!==t&&(this.sort=t,this.eventService.dispatchEvent(this.createColumnEvent("sortChanged",e))),this.dispatchStateUpdatedEvent("sort")},n.prototype.setMenuVisible=function(t,e){this.menuVisible!==t&&(this.menuVisible=t,this.eventService.dispatchEvent(this.createColumnEvent("menuVisibleChanged",e)))},n.prototype.isMenuVisible=function(){return this.menuVisible},n.prototype.isSortable=function(){return!!this.getColDefValue("sortable")},n.prototype.isSortAscending=function(){return this.sort==="asc"},n.prototype.isSortDescending=function(){return this.sort==="desc"},n.prototype.isSortNone=function(){return H(this.sort)},n.prototype.isSorting=function(){return P(this.sort)},n.prototype.getSortIndex=function(){return this.sortIndex},n.prototype.setSortIndex=function(t){this.sortIndex=t,this.dispatchStateUpdatedEvent("sortIndex")},n.prototype.setAggFunc=function(t){this.aggFunc=t,this.dispatchStateUpdatedEvent("aggFunc")},n.prototype.getAggFunc=function(){return this.aggFunc},n.prototype.getLeft=function(){return this.left},n.prototype.getOldLeft=function(){return this.oldLeft},n.prototype.getRight=function(){return this.left+this.actualWidth},n.prototype.setLeft=function(t,e){this.oldLeft=this.left,this.left!==t&&(this.left=t,this.eventService.dispatchEvent(this.createColumnEvent("leftChanged",e)))},n.prototype.isFilterActive=function(){return this.filterActive},n.prototype.setFilterActive=function(t,e,r){this.filterActive!==t&&(this.filterActive=t,this.eventService.dispatchEvent(this.createColumnEvent("filterActiveChanged",e)));var o=this.createColumnEvent("filterChanged",e);r&&Ve(o,r),this.eventService.dispatchEvent(o)},n.prototype.isHovered=function(){return this.columnHoverService.isHovered(this)},n.prototype.setPinned=function(t){t===!0||t==="left"?this.pinned="left":t==="right"?this.pinned="right":this.pinned=null,this.dispatchStateUpdatedEvent("pinned")},n.prototype.setFirstRightPinned=function(t,e){this.firstRightPinned!==t&&(this.firstRightPinned=t,this.eventService.dispatchEvent(this.createColumnEvent("firstRightPinnedChanged",e)))},n.prototype.setLastLeftPinned=function(t,e){this.lastLeftPinned!==t&&(this.lastLeftPinned=t,this.eventService.dispatchEvent(this.createColumnEvent("lastLeftPinnedChanged",e)))},n.prototype.isFirstRightPinned=function(){return this.firstRightPinned},n.prototype.isLastLeftPinned=function(){return this.lastLeftPinned},n.prototype.isPinned=function(){return this.pinned==="left"||this.pinned==="right"},n.prototype.isPinnedLeft=function(){return this.pinned==="left"},n.prototype.isPinnedRight=function(){return this.pinned==="right"},n.prototype.getPinned=function(){return this.pinned},n.prototype.setVisible=function(t,e){var r=t===!0;this.visible!==r&&(this.visible=r,this.eventService.dispatchEvent(this.createColumnEvent("visibleChanged",e))),this.dispatchStateUpdatedEvent("hide")},n.prototype.isVisible=function(){return this.visible},n.prototype.isSpanHeaderHeight=function(){var t=this.getColDef();return!t.suppressSpanHeaderHeight&&!t.autoHeaderHeight},n.prototype.getColumnGroupPaddingInfo=function(){var t=this.getParent();if(!t||!t.isPadding())return{numberOfParents:0,isSpanningTotal:!1};for(var e=t.getPaddingLevel()+1,r=!0;t;){if(!t.isPadding()){r=!1;break}t=t.getParent()}return{numberOfParents:e,isSpanningTotal:r}},n.prototype.getColDef=function(){return this.colDef},n.prototype.getColumnGroupShow=function(){return this.colDef.columnGroupShow},n.prototype.getColId=function(){return this.colId},n.prototype.getId=function(){return this.colId},n.prototype.getUniqueId=function(){return this.colId},n.prototype.getDefinition=function(){return this.colDef},n.prototype.getActualWidth=function(){return this.actualWidth},n.prototype.getAutoHeaderHeight=function(){return this.autoHeaderHeight},n.prototype.setAutoHeaderHeight=function(t){var e=t!==this.autoHeaderHeight;return this.autoHeaderHeight=t,e},n.prototype.createBaseColDefParams=function(t){var e=this.gridOptionsService.addGridCommonParams({node:t,data:t.data,colDef:this.colDef,column:this});return e},n.prototype.getColSpan=function(t){if(H(this.colDef.colSpan))return 1;var e=this.createBaseColDefParams(t),r=this.colDef.colSpan(e);return Math.max(r,1)},n.prototype.getRowSpan=function(t){if(H(this.colDef.rowSpan))return 1;var e=this.createBaseColDefParams(t),r=this.colDef.rowSpan(e);return Math.max(r,1)},n.prototype.setActualWidth=function(t,e,r){r===void 0&&(r=!1),this.minWidth!=null&&(t=Math.max(t,this.minWidth)),this.maxWidth!=null&&(t=Math.min(t,this.maxWidth)),this.actualWidth!==t&&(this.actualWidth=t,this.flex&&e!=="flex"&&e!=="gridInitializing"&&(this.flex=null),r||this.fireColumnWidthChangedEvent(e)),this.dispatchStateUpdatedEvent("width")},n.prototype.fireColumnWidthChangedEvent=function(t){this.eventService.dispatchEvent(this.createColumnEvent("widthChanged",t))},n.prototype.isGreaterThanMax=function(t){return this.maxWidth!=null?t>this.maxWidth:!1},n.prototype.getMinWidth=function(){return this.minWidth},n.prototype.getMaxWidth=function(){return this.maxWidth},n.prototype.getFlex=function(){return this.flex||0},n.prototype.setFlex=function(t){this.flex!==t&&(this.flex=t),this.dispatchStateUpdatedEvent("flex")},n.prototype.setMinimum=function(t){P(this.minWidth)&&this.setActualWidth(this.minWidth,t)},n.prototype.setRowGroupActive=function(t,e){this.rowGroupActive!==t&&(this.rowGroupActive=t,this.eventService.dispatchEvent(this.createColumnEvent("columnRowGroupChanged",e))),this.dispatchStateUpdatedEvent("rowGroup")},n.prototype.isRowGroupActive=function(){return this.rowGroupActive},n.prototype.setPivotActive=function(t,e){this.pivotActive!==t&&(this.pivotActive=t,this.eventService.dispatchEvent(this.createColumnEvent("columnPivotChanged",e))),this.dispatchStateUpdatedEvent("pivot")},n.prototype.isPivotActive=function(){return this.pivotActive},n.prototype.isAnyFunctionActive=function(){return this.isPivotActive()||this.isRowGroupActive()||this.isValueActive()},n.prototype.isAnyFunctionAllowed=function(){return this.isAllowPivot()||this.isAllowRowGroup()||this.isAllowValue()},n.prototype.setValueActive=function(t,e){this.aggregationActive!==t&&(this.aggregationActive=t,this.eventService.dispatchEvent(this.createColumnEvent("columnValueChanged",e)))},n.prototype.isValueActive=function(){return this.aggregationActive},n.prototype.isAllowPivot=function(){return this.colDef.enablePivot===!0},n.prototype.isAllowValue=function(){return this.colDef.enableValue===!0},n.prototype.isAllowRowGroup=function(){return this.colDef.enableRowGroup===!0},n.prototype.getMenuTabs=function(t){V("As of v31.1, 'getMenuTabs' is deprecated. Use 'getColDef().menuTabs ?? defaultValues' instead.");var e=this.getColDef().menuTabs;return e==null&&(e=t),e},n.prototype.dispatchStateUpdatedEvent=function(t){this.eventService.dispatchEvent({type:n.EVENT_STATE_UPDATED,key:t})},n.EVENT_MOVING_CHANGED="movingChanged",n.EVENT_LEFT_CHANGED="leftChanged",n.EVENT_WIDTH_CHANGED="widthChanged",n.EVENT_LAST_LEFT_PINNED_CHANGED="lastLeftPinnedChanged",n.EVENT_FIRST_RIGHT_PINNED_CHANGED="firstRightPinnedChanged",n.EVENT_VISIBLE_CHANGED="visibleChanged",n.EVENT_FILTER_CHANGED="filterChanged",n.EVENT_FILTER_ACTIVE_CHANGED="filterActiveChanged",n.EVENT_SORT_CHANGED="sortChanged",n.EVENT_COL_DEF_CHANGED="colDefChanged",n.EVENT_MENU_VISIBLE_CHANGED="menuVisibleChanged",n.EVENT_ROW_GROUP_CHANGED="columnRowGroupChanged",n.EVENT_PIVOT_CHANGED="columnPivotChanged",n.EVENT_VALUE_CHANGED="columnValueChanged",n.EVENT_STATE_UPDATED="columnStateUpdated",$r([v("gridOptionsService")],n.prototype,"gridOptionsService",void 0),$r([v("columnUtils")],n.prototype,"columnUtils",void 0),$r([v("columnHoverService")],n.prototype,"columnHoverService",void 0),$r([v("frameworkOverrides")],n.prototype,"frameworkOverrides",void 0),$r([F],n.prototype,"initialise",null),n}(),Lc=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},ie=function(){function n(t,e,r,o){this.localEventService=new xt,this.expandable=!1,this.instanceId=ma(),this.expandableListenerRemoveCallback=null,this.colGroupDef=t,this.groupId=e,this.expanded=!!t&&!!t.openByDefault,this.padding=r,this.level=o}return n.prototype.destroy=function(){this.expandableListenerRemoveCallback&&this.reset(null,void 0)},n.prototype.reset=function(t,e){this.colGroupDef=t,this.level=e,this.originalParent=null,this.expandableListenerRemoveCallback&&this.expandableListenerRemoveCallback(),this.children=void 0,this.expandable=void 0},n.prototype.getInstanceId=function(){return this.instanceId},n.prototype.setOriginalParent=function(t){this.originalParent=t},n.prototype.getOriginalParent=function(){return this.originalParent},n.prototype.getLevel=function(){return this.level},n.prototype.isVisible=function(){return this.children?this.children.some(function(t){return t.isVisible()}):!1},n.prototype.isPadding=function(){return this.padding},n.prototype.setExpanded=function(t){this.expanded=t===void 0?!1:t;var e={type:n.EVENT_EXPANDED_CHANGED};this.localEventService.dispatchEvent(e)},n.prototype.isExpandable=function(){return this.expandable},n.prototype.isExpanded=function(){return this.expanded},n.prototype.getGroupId=function(){return this.groupId},n.prototype.getId=function(){return this.getGroupId()},n.prototype.setChildren=function(t){this.children=t},n.prototype.getChildren=function(){return this.children},n.prototype.getColGroupDef=function(){return this.colGroupDef},n.prototype.getLeafColumns=function(){var t=[];return this.addLeafColumns(t),t},n.prototype.addLeafColumns=function(t){this.children&&this.children.forEach(function(e){e instanceof J?t.push(e):e instanceof n&&e.addLeafColumns(t)})},n.prototype.getColumnGroupShow=function(){var t=this.colGroupDef;if(t)return t.columnGroupShow},n.prototype.setupExpandable=function(){var t=this;this.setExpandable(),this.expandableListenerRemoveCallback&&this.expandableListenerRemoveCallback();var e=this.onColumnVisibilityChanged.bind(this);this.getLeafColumns().forEach(function(r){return r.addEventListener("visibleChanged",e)}),this.expandableListenerRemoveCallback=function(){t.getLeafColumns().forEach(function(r){return r.removeEventListener("visibleChanged",e)}),t.expandableListenerRemoveCallback=null}},n.prototype.setExpandable=function(){if(!this.isPadding()){for(var t=!1,e=!1,r=!1,o=this.findChildrenRemovingPadding(),i=0,s=o.length;i0}function q(n){if(!(!n||!n.length))return n[n.length-1]}function Tt(n,t,e){return n==null&&t==null?!0:n!=null&&t!=null&&n.length===t.length&&n.every(function(r,o){return e?e(r,t[o]):t[o]===r})}function xc(n,t){return Tt(n,t)}function Ca(n){return n.sort(function(t,e){return t-e})}function Nc(n,t){if(n)for(var e=n.length-2;e>=0;e--){var r=n[e]===t,o=n[e+1]===t;r&&o&&n.splice(e+1,1)}}function rn(n,t){var e=n.indexOf(t);e>=0&&(n[e]=n[n.length-1],n.pop())}function Ee(n,t){var e=n.indexOf(t);e>=0&&n.splice(e,1)}function Sa(n,t){for(var e=0;e=0;r--){var o=t[r];Yr(n,o,e)}}function on(n,t,e){wa(n,t),t.slice().reverse().forEach(function(r){return Yr(n,r,e)})}function ot(n,t){return n.indexOf(t)>-1}function Ea(n){return[].concat.apply([],n)}function nn(n,t){t==null||n==null||t.forEach(function(e){return n.push(e)})}function Vc(n){return n.map(zr)}function Hc(n,t){if(n!=null)for(var e=n.length-1;e>=0;e--)t(n[e],e)}var Bc=Object.freeze({__proto__:null,existsAndNotEmpty:Ic,last:q,areEqual:Tt,shallowCompare:xc,sortNumerically:Ca,removeRepeatsFromArray:Nc,removeFromUnorderedArray:rn,removeFromArray:Ee,removeAllFromUnorderedArray:Sa,removeAllFromArray:wa,insertIntoArray:Yr,insertArrayIntoArray:Gc,moveInArray:on,includes:ot,flatten:Ea,pushAll:nn,toStrings:Vc,forEachReverse:Hc}),_a="__ag_Grid_Stop_Propagation",kc=["touchstart","touchend","touchmove","touchcancel","scroll"],sn={};function it(n){n[_a]=!0}function nt(n){return n[_a]===!0}var an=function(){var n={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"},t=function(e){if(typeof sn[e]=="boolean")return sn[e];var r=document.createElement(n[e]||"div");return e="on"+e,sn[e]=e in r};return t}();function ko(n,t,e){for(var r=t;r;){var o=n.getDomData(r,e);if(o)return o;r=r.parentElement}return null}function Wo(n,t){return!t||!n?!1:Oa(t).indexOf(n)>=0}function Ra(n){for(var t=[],e=n.target;e;)t.push(e),e=e.parentElement;return t}function Oa(n){var t=n;return t.path?t.path:t.composedPath?t.composedPath():Ra(t)}function Ta(n,t,e,r){var o=ot(kc,e),i=o?{passive:!0}:void 0;n&&n.addEventListener&&n.addEventListener(t,e,r,i)}var Wc=Object.freeze({__proto__:null,stopPropagationForAgGrid:it,isStopPropagationForAgGrid:nt,isEventSupported:an,getCtrlForEventTarget:ko,isElementInEventPath:Wo,createEventPath:Ra,getEventPath:Oa,addSafePassiveEventListener:Ta}),rr=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},D=function(){function n(){var t=this;this.destroyFunctions=[],this.destroyed=!1,this.__v_skip=!0,this.lastChangeSetIdLookup={},this.propertyListenerId=0,this.isAlive=function(){return!t.destroyed}}return n.prototype.getFrameworkOverrides=function(){return this.frameworkOverrides},n.prototype.getContext=function(){return this.context},n.prototype.destroy=function(){this.destroyFunctions.forEach(function(t){return t()}),this.destroyFunctions.length=0,this.destroyed=!0,this.dispatchEvent({type:n.EVENT_DESTROYED})},n.prototype.addEventListener=function(t,e){this.localEventService||(this.localEventService=new xt),this.localEventService.addEventListener(t,e)},n.prototype.removeEventListener=function(t,e){this.localEventService&&this.localEventService.removeEventListener(t,e)},n.prototype.dispatchEvent=function(t){this.localEventService&&this.localEventService.dispatchEvent(t)},n.prototype.addManagedListener=function(t,e,r){var o=this;if(!this.destroyed){t instanceof HTMLElement?Ta(this.getFrameworkOverrides(),t,e,r):t.addEventListener(e,r);var i=function(){return t.removeEventListener(e,r),o.destroyFunctions=o.destroyFunctions.filter(function(s){return s!==i}),null};return this.destroyFunctions.push(i),i}},n.prototype.setupGridOptionListener=function(t,e){var r=this;this.gridOptionsService.addEventListener(t,e);var o=function(){return r.gridOptionsService.removeEventListener(t,e),r.destroyFunctions=r.destroyFunctions.filter(function(i){return i!==o}),null};return this.destroyFunctions.push(o),o},n.prototype.addManagedPropertyListener=function(t,e){return this.destroyed?function(){return null}:this.setupGridOptionListener(t,e)},n.prototype.addManagedPropertyListeners=function(t,e){var r=this;if(!this.destroyed){var o=t.join("-")+this.propertyListenerId++,i=function(s){if(s.changeSet){if(s.changeSet&&s.changeSet.id===r.lastChangeSetIdLookup[o])return;r.lastChangeSetIdLookup[o]=s.changeSet.id}var a={type:"gridPropertyChanged",changeSet:s.changeSet,source:s.source};e(a)};t.forEach(function(s){return r.setupGridOptionListener(s,i)})}},n.prototype.addDestroyFunc=function(t){this.isAlive()?this.destroyFunctions.push(t):t()},n.prototype.createManagedBean=function(t,e){var r=this.createBean(t,e);return this.addDestroyFunc(this.destroyBean.bind(this,t,e)),r},n.prototype.createBean=function(t,e,r){return(e||this.getContext()).createBean(t,r)},n.prototype.destroyBean=function(t,e){return(e||this.getContext()).destroyBean(t)},n.prototype.destroyBeans=function(t,e){var r=this;return t&&t.forEach(function(o){return r.destroyBean(o,e)}),[]},n.EVENT_DESTROYED="destroyed",rr([v("frameworkOverrides")],n.prototype,"frameworkOverrides",void 0),rr([v("context")],n.prototype,"context",void 0),rr([v("eventService")],n.prototype,"eventService",void 0),rr([v("gridOptionsService")],n.prototype,"gridOptionsService",void 0),rr([v("localeService")],n.prototype,"localeService",void 0),rr([v("environment")],n.prototype,"environment",void 0),rr([Se],n.prototype,"destroy",null),n}(),jc=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),jo=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Uc=function(n,t){return function(e,r){t(e,r,n)}},zc=function(n){jc(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.setBeans=function(e){this.logger=e.create("ColumnFactory")},t.prototype.createColumnTree=function(e,r,o,i){var s=new Sc,a=this.extractExistingTreeData(o),l=a.existingCols,u=a.existingGroups,c=a.existingColKeys;s.addExistingKeys(c);var p=this.recursivelyCreateColumns(e,0,r,l,s,u,i),d=this.findMaxDept(p,0);this.logger.log("Number of levels for grouped columns is "+d);var h=this.balanceColumnTree(p,0,d,s),f=function(y,m){y instanceof ie&&y.setupExpandable(),y.setOriginalParent(m)};return this.columnUtils.depthFirstOriginalTreeSearch(null,h,f),{columnTree:h,treeDept:d}},t.prototype.extractExistingTreeData=function(e){var r=[],o=[],i=[];return e&&this.columnUtils.depthFirstOriginalTreeSearch(null,e,function(s){if(s instanceof ie){var a=s;o.push(a)}else{var l=s;i.push(l.getId()),r.push(l)}}),{existingCols:r,existingGroups:o,existingColKeys:i}},t.prototype.createForAutoGroups=function(e,r){var o=this;return e.map(function(i){return o.createAutoGroupTreeItem(r,i)})},t.prototype.createAutoGroupTreeItem=function(e,r){for(var o=this.findDepth(e),i=r,s=o-1;s>=0;s--){var a=new ie(null,"FAKE_PATH_".concat(r.getId(),"}_").concat(s),!0,s);this.createBean(a),a.setChildren([i]),i.setOriginalParent(a),i=a}return o===0&&r.setOriginalParent(null),i},t.prototype.findDepth=function(e){for(var r=0,o=e;o&&o[0]&&o[0]instanceof ie;)r++,o=o[0].getChildren();return r},t.prototype.balanceColumnTree=function(e,r,o,i){for(var s=[],a=0;a=r;h--){var f=i.getUniqueKey(null,null),y=this.createMergedColGroupDef(null),m=new ie(y,f,!0,r);this.createBean(m),d&&d.setChildren([m]),d=m,p||(p=d)}if(p&&d){s.push(p);var C=e.some(function(w){return w instanceof ie});if(C){d.setChildren([l]);continue}else{d.setChildren(e);break}}s.push(l)}}return s},t.prototype.findMaxDept=function(e,r){for(var o=r,i=0;i=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},se=function(){function n(t,e,r,o){this.displayedChildren=[],this.localEventService=new xt,this.groupId=e,this.partId=r,this.providedColumnGroup=t,this.pinned=o}return n.createUniqueId=function(t,e){return t+"_"+e},n.prototype.reset=function(){this.parent=null,this.children=null,this.displayedChildren=null},n.prototype.getParent=function(){return this.parent},n.prototype.setParent=function(t){this.parent=t},n.prototype.getUniqueId=function(){return n.createUniqueId(this.groupId,this.partId)},n.prototype.isEmptyGroup=function(){return this.displayedChildren.length===0},n.prototype.isMoving=function(){var t=this.getProvidedColumnGroup().getLeafColumns();return!t||t.length===0?!1:t.every(function(e){return e.isMoving()})},n.prototype.checkLeft=function(){if(this.displayedChildren.forEach(function(o){o instanceof n&&o.checkLeft()}),this.displayedChildren.length>0)if(this.gridOptionsService.get("enableRtl")){var t=q(this.displayedChildren),e=t.getLeft();this.setLeft(e)}else{var r=this.displayedChildren[0].getLeft();this.setLeft(r)}else this.setLeft(null)},n.prototype.getLeft=function(){return this.left},n.prototype.getOldLeft=function(){return this.oldLeft},n.prototype.setLeft=function(t){this.oldLeft=this.left,this.left!==t&&(this.left=t,this.localEventService.dispatchEvent(this.createAgEvent(n.EVENT_LEFT_CHANGED)))},n.prototype.getPinned=function(){return this.pinned},n.prototype.createAgEvent=function(t){return{type:t}},n.prototype.addEventListener=function(t,e){this.localEventService.addEventListener(t,e)},n.prototype.removeEventListener=function(t,e){this.localEventService.removeEventListener(t,e)},n.prototype.getGroupId=function(){return this.groupId},n.prototype.getPartId=function(){return this.partId},n.prototype.isChildInThisGroupDeepSearch=function(t){var e=!1;return this.children.forEach(function(r){t===r&&(e=!0),r instanceof n&&r.isChildInThisGroupDeepSearch(t)&&(e=!0)}),e},n.prototype.getActualWidth=function(){var t=0;return this.displayedChildren&&this.displayedChildren.forEach(function(e){t+=e.getActualWidth()}),t},n.prototype.isResizable=function(){if(!this.displayedChildren)return!1;var t=!1;return this.displayedChildren.forEach(function(e){e.isResizable()&&(t=!0)}),t},n.prototype.getMinWidth=function(){var t=0;return this.displayedChildren.forEach(function(e){t+=e.getMinWidth()||0}),t},n.prototype.addChild=function(t){this.children||(this.children=[]),this.children.push(t)},n.prototype.getDisplayedChildren=function(){return this.displayedChildren},n.prototype.getLeafColumns=function(){var t=[];return this.addLeafColumns(t),t},n.prototype.getDisplayedLeafColumns=function(){var t=[];return this.addDisplayedLeafColumns(t),t},n.prototype.getDefinition=function(){return this.providedColumnGroup.getColGroupDef()},n.prototype.getColGroupDef=function(){return this.providedColumnGroup.getColGroupDef()},n.prototype.isPadding=function(){return this.providedColumnGroup.isPadding()},n.prototype.isExpandable=function(){return this.providedColumnGroup.isExpandable()},n.prototype.isExpanded=function(){return this.providedColumnGroup.isExpanded()},n.prototype.setExpanded=function(t){this.providedColumnGroup.setExpanded(t)},n.prototype.addDisplayedLeafColumns=function(t){this.displayedChildren.forEach(function(e){e instanceof J?t.push(e):e instanceof n&&e.addDisplayedLeafColumns(t)})},n.prototype.addLeafColumns=function(t){this.children.forEach(function(e){e instanceof J?t.push(e):e instanceof n&&e.addLeafColumns(t)})},n.prototype.getChildren=function(){return this.children},n.prototype.getColumnGroupShow=function(){return this.providedColumnGroup.getColumnGroupShow()},n.prototype.getProvidedColumnGroup=function(){return this.providedColumnGroup},n.prototype.getPaddingLevel=function(){var t=this.getParent();return!this.isPadding()||!t||!t.isPadding()?0:1+t.getPaddingLevel()},n.prototype.calculateDisplayedColumns=function(){var t=this;this.displayedChildren=[];for(var e=this;e!=null&&e.isPadding();)e=e.getParent();var r=e?e.providedColumnGroup.isExpandable():!1;if(!r){this.displayedChildren=this.children,this.localEventService.dispatchEvent(this.createAgEvent(n.EVENT_DISPLAYED_CHILDREN_CHANGED));return}this.children.forEach(function(o){var i=o instanceof n&&(!o.displayedChildren||!o.displayedChildren.length);if(!i){var s=o.getColumnGroupShow();switch(s){case"open":e.providedColumnGroup.isExpanded()&&t.displayedChildren.push(o);break;case"closed":e.providedColumnGroup.isExpanded()||t.displayedChildren.push(o);break;default:t.displayedChildren.push(o);break}}}),this.localEventService.dispatchEvent(this.createAgEvent(n.EVENT_DISPLAYED_CHILDREN_CHANGED))},n.EVENT_LEFT_CHANGED="leftChanged",n.EVENT_DISPLAYED_CHILDREN_CHANGED="displayedChildrenChanged",Kc([v("gridOptionsService")],n.prototype,"gridOptionsService",void 0),n}(),g=function(){function n(){}return n.EVENT_COLUMN_EVERYTHING_CHANGED="columnEverythingChanged",n.EVENT_NEW_COLUMNS_LOADED="newColumnsLoaded",n.EVENT_COLUMN_PIVOT_MODE_CHANGED="columnPivotModeChanged",n.EVENT_COLUMN_ROW_GROUP_CHANGED="columnRowGroupChanged",n.EVENT_EXPAND_COLLAPSE_ALL="expandOrCollapseAll",n.EVENT_COLUMN_PIVOT_CHANGED="columnPivotChanged",n.EVENT_GRID_COLUMNS_CHANGED="gridColumnsChanged",n.EVENT_COLUMN_VALUE_CHANGED="columnValueChanged",n.EVENT_COLUMN_MOVED="columnMoved",n.EVENT_COLUMN_VISIBLE="columnVisible",n.EVENT_COLUMN_PINNED="columnPinned",n.EVENT_COLUMN_GROUP_OPENED="columnGroupOpened",n.EVENT_COLUMN_RESIZED="columnResized",n.EVENT_DISPLAYED_COLUMNS_CHANGED="displayedColumnsChanged",n.EVENT_SUPPRESS_COLUMN_MOVE_CHANGED="suppressMovableColumns",n.EVENT_SUPPRESS_MENU_HIDE_CHANGED="suppressMenuHide",n.EVENT_SUPPRESS_FIELD_DOT_NOTATION="suppressFieldDotNotation",n.EVENT_VIRTUAL_COLUMNS_CHANGED="virtualColumnsChanged",n.EVENT_COLUMN_HEADER_MOUSE_OVER="columnHeaderMouseOver",n.EVENT_COLUMN_HEADER_MOUSE_LEAVE="columnHeaderMouseLeave",n.EVENT_COLUMN_HEADER_CLICKED="columnHeaderClicked",n.EVENT_COLUMN_HEADER_CONTEXT_MENU="columnHeaderContextMenu",n.EVENT_ASYNC_TRANSACTIONS_FLUSHED="asyncTransactionsFlushed",n.EVENT_ROW_GROUP_OPENED="rowGroupOpened",n.EVENT_ROW_DATA_UPDATED="rowDataUpdated",n.EVENT_PINNED_ROW_DATA_CHANGED="pinnedRowDataChanged",n.EVENT_RANGE_SELECTION_CHANGED="rangeSelectionChanged",n.EVENT_CHART_CREATED="chartCreated",n.EVENT_CHART_RANGE_SELECTION_CHANGED="chartRangeSelectionChanged",n.EVENT_CHART_OPTIONS_CHANGED="chartOptionsChanged",n.EVENT_CHART_DESTROYED="chartDestroyed",n.EVENT_TOOL_PANEL_VISIBLE_CHANGED="toolPanelVisibleChanged",n.EVENT_TOOL_PANEL_SIZE_CHANGED="toolPanelSizeChanged",n.EVENT_COLUMN_PANEL_ITEM_DRAG_START="columnPanelItemDragStart",n.EVENT_COLUMN_PANEL_ITEM_DRAG_END="columnPanelItemDragEnd",n.EVENT_MODEL_UPDATED="modelUpdated",n.EVENT_CUT_START="cutStart",n.EVENT_CUT_END="cutEnd",n.EVENT_PASTE_START="pasteStart",n.EVENT_PASTE_END="pasteEnd",n.EVENT_FILL_START="fillStart",n.EVENT_FILL_END="fillEnd",n.EVENT_RANGE_DELETE_START="rangeDeleteStart",n.EVENT_RANGE_DELETE_END="rangeDeleteEnd",n.EVENT_UNDO_STARTED="undoStarted",n.EVENT_UNDO_ENDED="undoEnded",n.EVENT_REDO_STARTED="redoStarted",n.EVENT_REDO_ENDED="redoEnded",n.EVENT_KEY_SHORTCUT_CHANGED_CELL_START="keyShortcutChangedCellStart",n.EVENT_KEY_SHORTCUT_CHANGED_CELL_END="keyShortcutChangedCellEnd",n.EVENT_CELL_CLICKED="cellClicked",n.EVENT_CELL_DOUBLE_CLICKED="cellDoubleClicked",n.EVENT_CELL_MOUSE_DOWN="cellMouseDown",n.EVENT_CELL_CONTEXT_MENU="cellContextMenu",n.EVENT_CELL_VALUE_CHANGED="cellValueChanged",n.EVENT_CELL_EDIT_REQUEST="cellEditRequest",n.EVENT_ROW_VALUE_CHANGED="rowValueChanged",n.EVENT_CELL_FOCUSED="cellFocused",n.EVENT_CELL_FOCUS_CLEARED="cellFocusCleared",n.EVENT_FULL_WIDTH_ROW_FOCUSED="fullWidthRowFocused",n.EVENT_ROW_SELECTED="rowSelected",n.EVENT_SELECTION_CHANGED="selectionChanged",n.EVENT_TOOLTIP_SHOW="tooltipShow",n.EVENT_TOOLTIP_HIDE="tooltipHide",n.EVENT_CELL_KEY_DOWN="cellKeyDown",n.EVENT_CELL_MOUSE_OVER="cellMouseOver",n.EVENT_CELL_MOUSE_OUT="cellMouseOut",n.EVENT_FILTER_CHANGED="filterChanged",n.EVENT_FILTER_MODIFIED="filterModified",n.EVENT_FILTER_OPENED="filterOpened",n.EVENT_ADVANCED_FILTER_BUILDER_VISIBLE_CHANGED="advancedFilterBuilderVisibleChanged",n.EVENT_SORT_CHANGED="sortChanged",n.EVENT_VIRTUAL_ROW_REMOVED="virtualRowRemoved",n.EVENT_ROW_CLICKED="rowClicked",n.EVENT_ROW_DOUBLE_CLICKED="rowDoubleClicked",n.EVENT_GRID_READY="gridReady",n.EVENT_GRID_PRE_DESTROYED="gridPreDestroyed",n.EVENT_GRID_SIZE_CHANGED="gridSizeChanged",n.EVENT_VIEWPORT_CHANGED="viewportChanged",n.EVENT_SCROLLBAR_WIDTH_CHANGED="scrollbarWidthChanged",n.EVENT_FIRST_DATA_RENDERED="firstDataRendered",n.EVENT_DRAG_STARTED="dragStarted",n.EVENT_DRAG_STOPPED="dragStopped",n.EVENT_CHECKBOX_CHANGED="checkboxChanged",n.EVENT_ROW_EDITING_STARTED="rowEditingStarted",n.EVENT_ROW_EDITING_STOPPED="rowEditingStopped",n.EVENT_CELL_EDITING_STARTED="cellEditingStarted",n.EVENT_CELL_EDITING_STOPPED="cellEditingStopped",n.EVENT_BODY_SCROLL="bodyScroll",n.EVENT_BODY_SCROLL_END="bodyScrollEnd",n.EVENT_HEIGHT_SCALE_CHANGED="heightScaleChanged",n.EVENT_PAGINATION_CHANGED="paginationChanged",n.EVENT_COMPONENT_STATE_CHANGED="componentStateChanged",n.EVENT_STORE_REFRESHED="storeRefreshed",n.EVENT_STATE_UPDATED="stateUpdated",n.EVENT_COLUMN_MENU_VISIBLE_CHANGED="columnMenuVisibleChanged",n.EVENT_BODY_HEIGHT_CHANGED="bodyHeightChanged",n.EVENT_COLUMN_CONTAINER_WIDTH_CHANGED="columnContainerWidthChanged",n.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED="displayedColumnsWidthChanged",n.EVENT_SCROLL_VISIBILITY_CHANGED="scrollVisibilityChanged",n.EVENT_COLUMN_HOVER_CHANGED="columnHoverChanged",n.EVENT_FLASH_CELLS="flashCells",n.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED="paginationPixelOffsetChanged",n.EVENT_DISPLAYED_ROWS_CHANGED="displayedRowsChanged",n.EVENT_LEFT_PINNED_WIDTH_CHANGED="leftPinnedWidthChanged",n.EVENT_RIGHT_PINNED_WIDTH_CHANGED="rightPinnedWidthChanged",n.EVENT_ROW_CONTAINER_HEIGHT_CHANGED="rowContainerHeightChanged",n.EVENT_HEADER_HEIGHT_CHANGED="headerHeightChanged",n.EVENT_COLUMN_HEADER_HEIGHT_CHANGED="columnHeaderHeightChanged",n.EVENT_ROW_DRAG_ENTER="rowDragEnter",n.EVENT_ROW_DRAG_MOVE="rowDragMove",n.EVENT_ROW_DRAG_LEAVE="rowDragLeave",n.EVENT_ROW_DRAG_END="rowDragEnd",n.EVENT_GRID_STYLES_CHANGED="gridStylesChanged",n.EVENT_POPUP_TO_FRONT="popupToFront",n.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST="columnRowGroupChangeRequest",n.EVENT_COLUMN_PIVOT_CHANGE_REQUEST="columnPivotChangeRequest",n.EVENT_COLUMN_VALUE_CHANGE_REQUEST="columnValueChangeRequest",n.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST="columnAggFuncChangeRequest",n.EVENT_STORE_UPDATED="storeUpdated",n.EVENT_FILTER_DESTROYED="filterDestroyed",n.EVENT_ROW_DATA_UPDATE_STARTED="rowDataUpdateStarted",n.EVENT_ROW_COUNT_READY="rowCountReady",n.EVENT_ADVANCED_FILTER_ENABLED_CHANGED="advancedFilterEnabledChanged",n.EVENT_DATA_TYPES_INFERRED="dataTypesInferred",n.EVENT_FIELD_VALUE_CHANGED="fieldValueChanged",n.EVENT_FIELD_PICKER_VALUE_SELECTED="fieldPickerValueSelected",n.EVENT_SIDE_BAR_UPDATED="sideBarUpdated",n}(),Pa=function(){function n(){this.existingIds={}}return n.prototype.getInstanceIdForKey=function(t){var e=this.existingIds[t],r;return typeof e!="number"?r=0:r=e+1,this.existingIds[t]=r,r},n}(),$c=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ln=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Er="ag-Grid-AutoColumn",Yc=function(n){$c(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.createAutoGroupColumns=function(e){var r=this,o=[],i=this.gridOptionsService.get("treeData"),s=this.gridOptionsService.isGroupMultiAutoColumn();return i&&s&&(console.warn('AG Grid: you cannot mix groupDisplayType = "multipleColumns" with treeData, only one column can be used to display groups when doing tree data'),s=!1),s?e.forEach(function(a,l){o.push(r.createOneAutoGroupColumn(a,l))}):o.push(this.createOneAutoGroupColumn()),o},t.prototype.updateAutoGroupColumns=function(e,r){var o=this;e.forEach(function(i,s){return o.updateOneAutoGroupColumn(i,s,r)})},t.prototype.createOneAutoGroupColumn=function(e,r){var o;e?o="".concat(Er,"-").concat(e.getId()):o=Er;var i=this.createAutoGroupColDef(o,e,r);i.colId=o;var s=new J(i,null,o,!0);return this.context.createBean(s),s},t.prototype.updateOneAutoGroupColumn=function(e,r,o){var i=e.getColDef(),s=typeof i.showRowGroup=="string"?i.showRowGroup:void 0,a=s!=null?this.columnModel.getPrimaryColumn(s):void 0,l=this.createAutoGroupColDef(e.getId(),a??void 0,r);e.setColDef(l,null,o),this.columnFactory.applyColumnState(e,l,o)},t.prototype.createAutoGroupColDef=function(e,r,o){var i=this.createBaseColDef(r),s=this.gridOptionsService.get("autoGroupColumnDef");if(Ve(i,s),i=this.columnFactory.addColumnDefaultAndTypes(i,e),!this.gridOptionsService.get("treeData")){var a=H(i.field)&&H(i.valueGetter)&&H(i.filterValueGetter)&&i.filter!=="agGroupColumnFilter";a&&(i.filter=!1)}o&&o>0&&(i.headerCheckboxSelection=!1);var l=this.gridOptionsService.isColumnsSortingCoupledToGroup(),u=i.valueGetter||i.field!=null;return l&&!u&&(i.sortIndex=void 0,i.initialSort=void 0),i},t.prototype.createBaseColDef=function(e){var r=this.gridOptionsService.get("autoGroupColumnDef"),o=this.localeService.getLocaleTextFunc(),i={headerName:o("group","Group")},s=r&&(r.cellRenderer||r.cellRendererSelector);if(s||(i.cellRenderer="agGroupCellRenderer"),e){var a=e.getColDef();Object.assign(i,{headerName:this.columnModel.getDisplayNameForColumn(e,"header"),headerValueGetter:a.headerValueGetter}),a.cellRenderer&&Object.assign(i,{cellRendererParams:{innerRenderer:a.cellRenderer,innerRendererParams:a.cellRendererParams}}),i.showRowGroup=e.getColId()}else i.showRowGroup=!0;return i},ln([v("columnModel")],t.prototype,"columnModel",void 0),ln([v("columnFactory")],t.prototype,"columnFactory",void 0),t=ln([x("autoGroupColService")],t),t}(D),qc=/[&<>"']/g,Qc={"&":"&","<":"<",">":">",'"':""","'":"'"};function Xc(n){var t=String.fromCharCode;function e(p){var d=[];if(!p)return[];for(var h=p.length,f=0,y,m;f=55296&&y<=56319&&f=55296&&p<=57343)throw Error("Lone surrogate U+"+p.toString(16).toUpperCase()+" is not a scalar value")}function o(p,d){return t(p>>d&63|128)}function i(p){if(p>=0&&p<=31&&p!==10){var d=p.toString(16).toUpperCase(),h=d.padStart(4,"0");return"_x".concat(h,"_")}if(!(p&4294967168))return t(p);var f="";return p&4294965248?p&4294901760?p&4292870144||(f=t(p>>18&7|240),f+=o(p,12),f+=o(p,6)):(r(p),f=t(p>>12&15|224),f+=o(p,6)):f=t(p>>6&31|192),f+=t(p&63|128),f}for(var s=e(n),a=s.length,l=-1,u,c="";++l1?o.substring(1,o.length):"")}).join(" ")}function Aa(n){return n.replace(/[A-Z]/g,function(t){return"-".concat(t.toLocaleLowerCase())})}var Zc=Object.freeze({__proto__:null,utf8_encode:Xc,capitalise:Jc,escapeString:ae,camelCaseToHumanText:Da,camelCaseToHyphenated:Aa});function Nt(n){var t=new Map;return n.forEach(function(e){return t.set(e[0],e[1])}),t}function ep(n,t){var e=new Map;return n.forEach(function(r){return e.set(t(r),r)}),e}function tp(n){var t=[];return n.forEach(function(e,r){return t.push(r)}),t}var rp=Object.freeze({__proto__:null,convertToMap:Nt,mapById:ep,keys:tp}),op=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ve=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},ip=function(n,t){return function(e,r){t(e,r,n)}},np=function(n,t){var e={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&t.indexOf(r)<0&&(e[r]=n[r]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(n);o0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},ke=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},sp=function(n){op(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.primaryHeaderRowCount=0,e.secondaryHeaderRowCount=0,e.gridHeaderRowCount=0,e.displayedColumnsLeft=[],e.displayedColumnsRight=[],e.displayedColumnsCenter=[],e.displayedColumns=[],e.displayedColumnsAndGroupsMap={},e.viewportColumns=[],e.viewportColumnsHash="",e.headerViewportColumns=[],e.viewportColumnsCenter=[],e.headerViewportColumnsCenter=[],e.viewportRowLeft={},e.viewportRowRight={},e.viewportRowCenter={},e.autoHeightActiveAtLeastOnce=!1,e.rowGroupColumns=[],e.valueColumns=[],e.pivotColumns=[],e.ready=!1,e.changeEventsDispatching=!1,e.autoGroupsNeedBuilding=!1,e.forceRecreateAutoGroups=!1,e.pivotMode=!1,e.bodyWidth=0,e.leftWidth=0,e.rightWidth=0,e.bodyWidthDirty=!0,e.shouldQueueResizeOperations=!1,e.resizeOperationQueue=[],e}return t.prototype.init=function(){var e=this;this.suppressColumnVirtualisation=this.gridOptionsService.get("suppressColumnVirtualisation");var r=this.gridOptionsService.get("pivotMode");this.isPivotSettingAllowed(r)&&(this.pivotMode=r),this.addManagedPropertyListeners(["groupDisplayType","treeData","treeDataDisplayType","groupHideOpenParents"],function(o){return e.buildAutoGroupColumns(_r(o.source))}),this.addManagedPropertyListener("autoGroupColumnDef",function(o){return e.onAutoGroupColumnDefChanged(_r(o.source))}),this.addManagedPropertyListeners(["defaultColDef","columnTypes","suppressFieldDotNotation"],function(o){return e.onSharedColDefChanged(_r(o.source))}),this.addManagedPropertyListener("pivotMode",function(o){return e.setPivotMode(e.gridOptionsService.get("pivotMode"),_r(o.source))}),this.addManagedListener(this.eventService,g.EVENT_FIRST_DATA_RENDERED,function(){return e.onFirstDataRendered()})},t.prototype.buildAutoGroupColumns=function(e){this.columnDefs&&(this.autoGroupsNeedBuilding=!0,this.forceRecreateAutoGroups=!0,this.updateGridColumns(),this.updateDisplayedColumns(e))},t.prototype.onAutoGroupColumnDefChanged=function(e){this.groupAutoColumns&&this.autoGroupColService.updateAutoGroupColumns(this.groupAutoColumns,e)},t.prototype.onSharedColDefChanged=function(e){this.gridColumns&&(this.groupAutoColumns&&this.autoGroupColService.updateAutoGroupColumns(this.groupAutoColumns,e),this.createColumnsFromColumnDefs(!0,e))},t.prototype.setColumnDefs=function(e,r){var o=!!this.columnDefs;this.columnDefs=e,this.createColumnsFromColumnDefs(o,r)},t.prototype.recreateColumnDefs=function(e){this.onSharedColDefChanged(e)},t.prototype.destroyOldColumns=function(e,r){var o={};if(e){this.columnUtils.depthFirstOriginalTreeSearch(null,e,function(s){o[s.getInstanceId()]=s}),r&&this.columnUtils.depthFirstOriginalTreeSearch(null,r,function(s){o[s.getInstanceId()]=null});var i=Object.values(o).filter(function(s){return s!=null});this.destroyBeans(i)}},t.prototype.destroyColumns=function(){this.destroyOldColumns(this.primaryColumnTree),this.destroyOldColumns(this.secondaryBalancedTree),this.destroyOldColumns(this.groupAutoColsBalancedTree)},t.prototype.createColumnsFromColumnDefs=function(e,r){var o=this,i=e?this.compareColumnStatesAndDispatchEvents(r):void 0;this.valueCache.expire(),this.autoGroupsNeedBuilding=!0;var s=this.primaryColumns,a=this.primaryColumnTree,l=this.columnFactory.createColumnTree(this.columnDefs,!0,a,r);this.destroyOldColumns(this.primaryColumnTree,l.columnTree),this.primaryColumnTree=l.columnTree,this.primaryHeaderRowCount=l.treeDept+1,this.primaryColumns=this.getColumnsFromTree(this.primaryColumnTree),this.primaryColumnsMap={},this.primaryColumns.forEach(function(p){return o.primaryColumnsMap[p.getId()]=p}),this.extractRowGroupColumns(r,s),this.extractPivotColumns(r,s),this.extractValueColumns(r,s),this.ready=!0;var u=this.gridColsArePrimary===void 0,c=this.gridColsArePrimary||u||this.autoGroupsNeedBuilding;c&&(this.updateGridColumns(),e&&this.gridColsArePrimary&&!this.gridOptionsService.get("maintainColumnOrder")&&this.orderGridColumnsLikePrimary(),this.updateDisplayedColumns(r),this.checkViewportColumns()),this.dispatchEverythingChanged(r),this.changeEventsDispatching=!0,i&&i(),this.changeEventsDispatching=!1,this.dispatchNewColumnsLoaded(r)},t.prototype.shouldRowModelIgnoreRefresh=function(){return this.changeEventsDispatching},t.prototype.dispatchNewColumnsLoaded=function(e){var r={type:g.EVENT_NEW_COLUMNS_LOADED,source:e};this.eventService.dispatchEvent(r),e==="gridInitializing"&&this.onColumnsReady()},t.prototype.dispatchEverythingChanged=function(e){var r={type:g.EVENT_COLUMN_EVERYTHING_CHANGED,source:e};this.eventService.dispatchEvent(r)},t.prototype.orderGridColumnsLikePrimary=function(){var e=this,r=this.primaryColumns;if(r){var o=r.filter(function(s){return e.gridColumns.indexOf(s)>=0}),i=this.gridColumns.filter(function(s){return o.indexOf(s)<0});this.gridColumns=ke(ke([],Be(i),!1),Be(o),!1),this.gridColumns=this.placeLockedColumns(this.gridColumns)}},t.prototype.getAllDisplayedAutoHeightCols=function(){return this.displayedAutoHeightCols},t.prototype.setViewport=function(){this.gridOptionsService.get("enableRtl")?(this.viewportLeft=this.bodyWidth-this.scrollPosition-this.scrollWidth,this.viewportRight=this.bodyWidth-this.scrollPosition):(this.viewportLeft=this.scrollPosition,this.viewportRight=this.scrollWidth+this.scrollPosition)},t.prototype.getDisplayedColumnsStartingAt=function(e){for(var r=e,o=[];r!=null;)o.push(r),r=this.getDisplayedColAfter(r);return o},t.prototype.checkViewportColumns=function(e){if(e===void 0&&(e=!1),this.displayedColumnsCenter!=null){var r=this.extractViewport();if(r){var o={type:g.EVENT_VIRTUAL_COLUMNS_CHANGED,afterScroll:e};this.eventService.dispatchEvent(o)}}},t.prototype.setViewportPosition=function(e,r,o){o===void 0&&(o=!1),(e!==this.scrollWidth||r!==this.scrollPosition||this.bodyWidthDirty)&&(this.scrollWidth=e,this.scrollPosition=r,this.bodyWidthDirty=!0,this.setViewport(),this.ready&&this.checkViewportColumns(o))},t.prototype.isPivotMode=function(){return this.pivotMode},t.prototype.isPivotSettingAllowed=function(e){return e&&this.gridOptionsService.get("treeData")?(console.warn("AG Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'"),!1):!0},t.prototype.setPivotMode=function(e,r){if(!(e===this.pivotMode||!this.isPivotSettingAllowed(this.pivotMode))&&(this.pivotMode=e,!!this.gridColumns)){this.autoGroupsNeedBuilding=!0,this.updateGridColumns(),this.updateDisplayedColumns(r);var o={type:g.EVENT_COLUMN_PIVOT_MODE_CHANGED};this.eventService.dispatchEvent(o)}},t.prototype.getSecondaryPivotColumn=function(e,r){if(H(this.secondaryColumns))return null;var o=this.getPrimaryColumn(r),i=null;return this.secondaryColumns.forEach(function(s){var a=s.getColDef().pivotKeys,l=s.getColDef().pivotValueColumn,u=Tt(a,e),c=l===o;u&&c&&(i=s)}),i},t.prototype.setBeans=function(e){this.logger=e.create("columnModel")},t.prototype.setFirstRightAndLastLeftPinned=function(e){var r,o;this.gridOptionsService.get("enableRtl")?(r=this.displayedColumnsLeft?this.displayedColumnsLeft[0]:null,o=this.displayedColumnsRight?q(this.displayedColumnsRight):null):(r=this.displayedColumnsLeft?q(this.displayedColumnsLeft):null,o=this.displayedColumnsRight?this.displayedColumnsRight[0]:null),this.gridColumns.forEach(function(i){i.setLastLeftPinned(i===r,e),i.setFirstRightPinned(i===o,e)})},t.prototype.autoSizeColumns=function(e){var r=this;if(this.shouldQueueResizeOperations){this.resizeOperationQueue.push(function(){return r.autoSizeColumns(e)});return}var o=e.columns,i=e.skipHeader,s=e.skipHeaderGroups,a=e.stopAtGroup,l=e.source,u=l===void 0?"api":l;this.animationFrameService.flushAllFrames();for(var c=[],p=-1,d=i??this.gridOptionsService.get("skipHeaderOnAutoSize"),h=s??d;p!==0;)p=0,this.actionOnGridColumns(o,function(f){if(c.indexOf(f)>=0)return!1;var y=r.autoWidthCalculator.getPreferredWidthForColumn(f,d);if(y>0){var m=r.normaliseColumnWidth(f,y);f.setActualWidth(m,u),c.push(f),p++}return!0},u);h||this.autoSizeColumnGroupsByColumns(o,u,a),this.dispatchColumnResizedEvent(c,!0,"autosizeColumns")},t.prototype.dispatchColumnResizedEvent=function(e,r,o,i){if(i===void 0&&(i=null),e&&e.length){var s={type:g.EVENT_COLUMN_RESIZED,columns:e,column:e.length===1?e[0]:null,flexColumns:i,finished:r,source:o};this.eventService.dispatchEvent(s)}},t.prototype.dispatchColumnChangedEvent=function(e,r,o){var i={type:e,columns:r,column:r&&r.length==1?r[0]:null,source:o};this.eventService.dispatchEvent(i)},t.prototype.dispatchColumnMovedEvent=function(e){var r=e.movedColumns,o=e.source,i=e.toIndex,s=e.finished,a={type:g.EVENT_COLUMN_MOVED,columns:r,column:r&&r.length===1?r[0]:null,toIndex:i,finished:s,source:o};this.eventService.dispatchEvent(a)},t.prototype.dispatchColumnPinnedEvent=function(e,r){if(e.length){var o=e.length===1?e[0]:null,i=this.getCommonValue(e,function(a){return a.getPinned()}),s={type:g.EVENT_COLUMN_PINNED,pinned:i??null,columns:e,column:o,source:r};this.eventService.dispatchEvent(s)}},t.prototype.dispatchColumnVisibleEvent=function(e,r){if(e.length){var o=e.length===1?e[0]:null,i=this.getCommonValue(e,function(a){return a.isVisible()}),s={type:g.EVENT_COLUMN_VISIBLE,visible:i,columns:e,column:o,source:r};this.eventService.dispatchEvent(s)}},t.prototype.autoSizeColumn=function(e,r,o){e&&this.autoSizeColumns({columns:[e],skipHeader:o,skipHeaderGroups:!0,source:r})},t.prototype.autoSizeColumnGroupsByColumns=function(e,r,o){var i,s,a,l,u=new Set,c=this.getGridColumns(e);c.forEach(function(E){for(var S=E.getParent();S&&S!=o;)S.isPadding()||u.add(S),S=S.getParent()});var p,d=[];try{for(var h=un(u),f=h.next();!f.done;f=h.next()){var y=f.value;try{for(var m=(a=void 0,un(this.ctrlsService.getHeaderRowContainerCtrls())),C=m.next();!C.done;C=m.next()){var w=C.value;if(p=w.getHeaderCtrlForColumn(y),p)break}}catch(E){a={error:E}}finally{try{C&&!C.done&&(l=m.return)&&l.call(m)}finally{if(a)throw a.error}}p&&p.resizeLeafColumnsToFit(r)}}catch(E){i={error:E}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(i)throw i.error}}return d},t.prototype.autoSizeAllColumns=function(e,r){var o=this;if(this.shouldQueueResizeOperations){this.resizeOperationQueue.push(function(){return o.autoSizeAllColumns(e,r)});return}var i=this.getAllDisplayedColumns();this.autoSizeColumns({columns:i,skipHeader:r,source:e})},t.prototype.getColumnsFromTree=function(e){var r=[],o=function(i){for(var s=0;s=0},t.prototype.getAllDisplayedColumns=function(){return this.displayedColumns},t.prototype.getViewportColumns=function(){return this.viewportColumns},t.prototype.getDisplayedLeftColumnsForRow=function(e){return this.colSpanActive?this.getDisplayedColumnsForRow(e,this.displayedColumnsLeft):this.displayedColumnsLeft},t.prototype.getDisplayedRightColumnsForRow=function(e){return this.colSpanActive?this.getDisplayedColumnsForRow(e,this.displayedColumnsRight):this.displayedColumnsRight},t.prototype.isColSpanActive=function(){return this.colSpanActive},t.prototype.getDisplayedColumnsForRow=function(e,r,o,i){for(var s=[],a=null,l=function(p){var d=r[p],h=r.length-p,f=Math.min(d.getColSpan(e),h),y=[d];if(f>1){for(var m=f-1,C=1;C<=m;C++)y.push(r[p+C]);p+=m}var w;if(o?(w=!1,y.forEach(function(S){o(S)&&(w=!0)})):w=!0,w){if(s.length===0&&a){var E=i?i(d):!1;E&&s.push(a)}s.push(d)}a=d,u=p},u,c=0;cr.viewportLeft},i=this.isColumnVirtualisationSuppressed()?null:this.isColumnInRowViewport.bind(this);return this.getDisplayedColumnsForRow(e,this.displayedColumnsCenter,i,o)},t.prototype.isColumnAtEdge=function(e,r){var o=this.getAllDisplayedColumns();if(!o.length)return!1;var i=r==="first",s;if(e instanceof se){var a=e.getDisplayedLeafColumns();if(!a.length)return!1;s=i?a[0]:q(a)}else s=e;return(i?o[0]:q(o))===s},t.prototype.getAriaColumnIndex=function(e){var r;return e instanceof se?r=e.getLeafColumns()[0]:r=e,this.ariaOrderColumns.indexOf(r)+1},t.prototype.isColumnInHeaderViewport=function(e){return e.isAutoHeaderHeight()?!0:this.isColumnInRowViewport(e)},t.prototype.isColumnInRowViewport=function(e){if(e.isAutoHeight())return!0;var r=e.getLeft()||0,o=r+e.getActualWidth(),i=this.viewportLeft-200,s=this.viewportRight+200,a=rs&&o>s;return!a&&!l},t.prototype.getDisplayedColumnsLeftWidth=function(){return this.getWidthOfColsInList(this.displayedColumnsLeft)},t.prototype.getDisplayedColumnsRightWidth=function(){return this.getWidthOfColsInList(this.displayedColumnsRight)},t.prototype.updatePrimaryColumnList=function(e,r,o,i,s,a){var l=this;if(!(!e||Ge(e))){var u=!1;if(e.forEach(function(p){if(p){var d=l.getPrimaryColumn(p);if(d){if(o){if(r.indexOf(d)>=0)return;r.push(d)}else{if(r.indexOf(d)<0)return;Ee(r,d)}i(d),u=!0}}}),!!u){this.autoGroupsNeedBuilding&&this.updateGridColumns(),this.updateDisplayedColumns(a);var c={type:s,columns:r,column:r.length===1?r[0]:null,source:a};this.eventService.dispatchEvent(c)}}},t.prototype.setRowGroupColumns=function(e,r){this.autoGroupsNeedBuilding=!0,this.setPrimaryColumnList(e,this.rowGroupColumns,g.EVENT_COLUMN_ROW_GROUP_CHANGED,!0,this.setRowGroupActive.bind(this),r)},t.prototype.setRowGroupActive=function(e,r,o){e!==r.isRowGroupActive()&&(r.setRowGroupActive(e,o),e&&!this.gridOptionsService.get("suppressRowGroupHidesColumns")&&this.setColumnsVisible([r],!1,o),!e&&!this.gridOptionsService.get("suppressMakeColumnVisibleAfterUnGroup")&&this.setColumnsVisible([r],!0,o))},t.prototype.addRowGroupColumns=function(e,r){this.autoGroupsNeedBuilding=!0,this.updatePrimaryColumnList(e,this.rowGroupColumns,!0,this.setRowGroupActive.bind(this,!0),g.EVENT_COLUMN_ROW_GROUP_CHANGED,r)},t.prototype.removeRowGroupColumns=function(e,r){this.autoGroupsNeedBuilding=!0,this.updatePrimaryColumnList(e,this.rowGroupColumns,!1,this.setRowGroupActive.bind(this,!1),g.EVENT_COLUMN_ROW_GROUP_CHANGED,r)},t.prototype.addPivotColumns=function(e,r){this.updatePrimaryColumnList(e,this.pivotColumns,!0,function(o){return o.setPivotActive(!0,r)},g.EVENT_COLUMN_PIVOT_CHANGED,r)},t.prototype.setPivotColumns=function(e,r){this.setPrimaryColumnList(e,this.pivotColumns,g.EVENT_COLUMN_PIVOT_CHANGED,!0,function(o,i){i.setPivotActive(o,r)},r)},t.prototype.removePivotColumns=function(e,r){this.updatePrimaryColumnList(e,this.pivotColumns,!1,function(o){return o.setPivotActive(!1,r)},g.EVENT_COLUMN_PIVOT_CHANGED,r)},t.prototype.setPrimaryColumnList=function(e,r,o,i,s,a){var l=this;if(this.gridColumns){var u=new Map;r.forEach(function(c,p){return u.set(c,p)}),r.length=0,P(e)&&e.forEach(function(c){var p=l.getPrimaryColumn(c);p&&r.push(p)}),r.forEach(function(c,p){var d=u.get(c);if(d===void 0){u.set(c,0);return}i&&d!==p||u.delete(c)}),(this.primaryColumns||[]).forEach(function(c){var p=r.indexOf(c)>=0;s(p,c)}),this.autoGroupsNeedBuilding&&this.updateGridColumns(),this.updateDisplayedColumns(a),this.dispatchColumnChangedEvent(o,ke([],Be(u.keys()),!1),a)}},t.prototype.setValueColumns=function(e,r){this.setPrimaryColumnList(e,this.valueColumns,g.EVENT_COLUMN_VALUE_CHANGED,!1,this.setValueActive.bind(this),r)},t.prototype.setValueActive=function(e,r,o){if(e!==r.isValueActive()&&(r.setValueActive(e,o),e&&!r.getAggFunc())){var i=this.aggFuncService.getDefaultAggFunc(r);r.setAggFunc(i)}},t.prototype.addValueColumns=function(e,r){this.updatePrimaryColumnList(e,this.valueColumns,!0,this.setValueActive.bind(this,!0),g.EVENT_COLUMN_VALUE_CHANGED,r)},t.prototype.removeValueColumns=function(e,r){this.updatePrimaryColumnList(e,this.valueColumns,!1,this.setValueActive.bind(this,!1),g.EVENT_COLUMN_VALUE_CHANGED,r)},t.prototype.normaliseColumnWidth=function(e,r){var o=e.getMinWidth();P(o)&&r0?s+=d:a=!1});var l=o>=i,u=!a||o<=s;return l&&u},t.prototype.resizeColumnSets=function(e){var r=this,o=e.resizeSets,i=e.finished,s=e.source,a=!o||o.every(function(f){return r.checkMinAndMaxWidthsForSet(f)});if(!a){if(i){var l=o&&o.length>0?o[0].columns:null;this.dispatchColumnResizedEvent(l,i,s)}return}var u=[],c=[];o.forEach(function(f){var y=f.width,m=f.columns,C=f.ratios,w={},E={};m.forEach(function(A){return c.push(A)});for(var S=!0,R=0,O=function(){if(R++,R>1e3)return console.error("AG Grid: infinite loop in resizeColumnSets"),"break";S=!1;var A=[],M=0,N=y;m.forEach(function(W,ee){var oe=E[W.getId()];if(oe)N-=w[W.getId()];else{A.push(W);var Z=C[ee];M+=Z}});var I=1/M;A.forEach(function(W,ee){var oe=ee===A.length-1,Z;oe?Z=N:(Z=Math.round(C[ee]*y*I),N-=Z);var te=W.getMinWidth(),Q=W.getMaxWidth();P(te)&&Z0&&Z>Q&&(Z=Q,E[W.getId()]=!0,S=!0),w[W.getId()]=Z})};S;){var b=O();if(b==="break")break}m.forEach(function(A){var M=w[A.getId()],N=A.getActualWidth();N!==M&&(A.setActualWidth(M,s),u.push(A))})});var p=u.length>0,d=[];p&&(d=this.refreshFlexedColumns({resizingCols:c,skipSetLeft:!0}),this.setLeftValues(s),this.updateBodyWidths(),this.checkViewportColumns());var h=c.concat(d);(p||i)&&this.dispatchColumnResizedEvent(h,i,s,d)},t.prototype.setColumnAggFunc=function(e,r,o){if(e){var i=this.getPrimaryColumn(e);i&&(i.setAggFunc(r),this.dispatchColumnChangedEvent(g.EVENT_COLUMN_VALUE_CHANGED,[i],o))}},t.prototype.moveRowGroupColumn=function(e,r,o){if(!this.isRowGroupEmpty()){var i=this.rowGroupColumns[e],s=this.rowGroupColumns.slice(e,r);this.rowGroupColumns.splice(e,1),this.rowGroupColumns.splice(r,0,i);var a={type:g.EVENT_COLUMN_ROW_GROUP_CHANGED,columns:s,column:s.length===1?s[0]:null,source:o};this.eventService.dispatchEvent(a)}},t.prototype.moveColumns=function(e,r,o,i){if(i===void 0&&(i=!0),!!this.gridColumns){if(this.columnAnimationService.start(),r>this.gridColumns.length-e.length){console.warn("AG Grid: tried to insert columns in invalid location, toIndex = "+r),console.warn("AG Grid: remember that you should not count the moving columns when calculating the new index");return}var s=this.getGridColumns(e),a=!this.doesMovePassRules(s,r);a||(on(this.gridColumns,s,r),this.updateDisplayedColumns(o),this.dispatchColumnMovedEvent({movedColumns:s,source:o,toIndex:r,finished:i}),this.columnAnimationService.finish())}},t.prototype.doesMovePassRules=function(e,r){var o=this.getProposedColumnOrder(e,r);return this.doesOrderPassRules(o)},t.prototype.doesOrderPassRules=function(e){return!(!this.doesMovePassMarryChildren(e)||!this.doesMovePassLockedPositions(e))},t.prototype.getProposedColumnOrder=function(e,r){var o=this.gridColumns.slice();return on(o,e,r),o},t.prototype.sortColumnsLikeGridColumns=function(e){var r=this;if(!(!e||e.length<=1)){var o=e.filter(function(i){return r.gridColumns.indexOf(i)<0}).length>0;o||e.sort(function(i,s){var a=r.gridColumns.indexOf(i),l=r.gridColumns.indexOf(s);return a-l})}},t.prototype.doesMovePassLockedPositions=function(e){var r=0,o=!0,i=function(s){return s?s===!0||s==="left"?0:2:1};return e.forEach(function(s){var a=i(s.getColDef().lockPosition);ad&&(r=!1)}}}),r},t.prototype.moveColumnByIndex=function(e,r,o){if(this.gridColumns){var i=this.gridColumns[e];this.moveColumns([i],r,o)}},t.prototype.getColumnDefs=function(){var e=this;if(this.primaryColumns){var r=this.primaryColumns.slice();return this.gridColsArePrimary?r.sort(function(o,i){return e.gridColumns.indexOf(o)-e.gridColumns.indexOf(i)}):this.lastPrimaryOrder&&r.sort(function(o,i){return e.lastPrimaryOrder.indexOf(o)-e.lastPrimaryOrder.indexOf(i)}),this.columnDefFactory.buildColumnDefs(r,this.rowGroupColumns,this.pivotColumns)}},t.prototype.getBodyContainerWidth=function(){return this.bodyWidth},t.prototype.getContainerWidth=function(e){switch(e){case"left":return this.leftWidth;case"right":return this.rightWidth;default:return this.bodyWidth}},t.prototype.updateBodyWidths=function(){var e=this.getWidthOfColsInList(this.displayedColumnsCenter),r=this.getWidthOfColsInList(this.displayedColumnsLeft),o=this.getWidthOfColsInList(this.displayedColumnsRight);this.bodyWidthDirty=this.bodyWidth!==e;var i=this.bodyWidth!==e||this.leftWidth!==r||this.rightWidth!==o;if(i){this.bodyWidth=e,this.leftWidth=r,this.rightWidth=o;var s={type:g.EVENT_COLUMN_CONTAINER_WIDTH_CHANGED};this.eventService.dispatchEvent(s);var a={type:g.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED};this.eventService.dispatchEvent(a)}},t.prototype.getValueColumns=function(){return this.valueColumns?this.valueColumns:[]},t.prototype.getPivotColumns=function(){return this.pivotColumns?this.pivotColumns:[]},t.prototype.isPivotActive=function(){return this.pivotColumns&&this.pivotColumns.length>0&&this.pivotMode},t.prototype.getRowGroupColumns=function(){return this.rowGroupColumns?this.rowGroupColumns:[]},t.prototype.getDisplayedCenterColumns=function(){return this.displayedColumnsCenter},t.prototype.getDisplayedLeftColumns=function(){return this.displayedColumnsLeft},t.prototype.getDisplayedRightColumns=function(){return this.displayedColumnsRight},t.prototype.getDisplayedColumns=function(e){switch(e){case"left":return this.getDisplayedLeftColumns();case"right":return this.getDisplayedRightColumns();default:return this.getDisplayedCenterColumns()}},t.prototype.getAllPrimaryColumns=function(){return this.primaryColumns?this.primaryColumns:null},t.prototype.getSecondaryColumns=function(){return this.secondaryColumns?this.secondaryColumns:null},t.prototype.getAllColumnsForQuickFilter=function(){return this.columnsForQuickFilter},t.prototype.getAllGridColumns=function(){var e;return(e=this.gridColumns)!==null&&e!==void 0?e:[]},t.prototype.isEmpty=function(){return Ge(this.gridColumns)},t.prototype.isRowGroupEmpty=function(){return Ge(this.rowGroupColumns)},t.prototype.setColumnsVisible=function(e,r,o){r===void 0&&(r=!1),this.applyColumnState({state:e.map(function(i){return{colId:typeof i=="string"?i:i.getColId(),hide:!r}})},o)},t.prototype.setColumnsPinned=function(e,r,o){if(this.gridColumns){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 i;r===!0||r==="left"?i="left":r==="right"?i="right":i=null,this.actionOnGridColumns(e,function(s){return s.getPinned()!==i?(s.setPinned(i),!0):!1},o,function(){var s={type:g.EVENT_COLUMN_PINNED,pinned:i,column:null,columns:null,source:o};return s}),this.columnAnimationService.finish()}},t.prototype.actionOnGridColumns=function(e,r,o,i){var s=this;if(!Ge(e)){var a=[];if(e.forEach(function(u){if(u){var c=s.getGridColumn(u);if(c){var p=r(c);p!==!1&&a.push(c)}}}),!!a.length&&(this.updateDisplayedColumns(o),P(i)&&i)){var l=i();l.columns=a,l.column=a.length===1?a[0]:null,this.eventService.dispatchEvent(l)}}},t.prototype.getDisplayedColBefore=function(e){var r=this.getAllDisplayedColumns(),o=r.indexOf(e);return o>0?r[o-1]:null},t.prototype.getDisplayedColAfter=function(e){var r=this.getAllDisplayedColumns(),o=r.indexOf(e);return o0},t.prototype.isPinningRight=function(){return this.displayedColumnsRight.length>0},t.prototype.getPrimaryAndSecondaryAndAutoColumns=function(){var e;return(e=[]).concat.apply(e,[this.primaryColumns||[],this.groupAutoColumns||[],this.secondaryColumns||[]])},t.prototype.createStateItemFromColumn=function(e){var r=e.isRowGroupActive()?this.rowGroupColumns.indexOf(e):null,o=e.isPivotActive()?this.pivotColumns.indexOf(e):null,i=e.isValueActive()?e.getAggFunc():null,s=e.getSort()!=null?e.getSort():null,a=e.getSortIndex()!=null?e.getSortIndex():null,l=e.getFlex()!=null&&e.getFlex()>0?e.getFlex():null,u={colId:e.getColId(),width:e.getActualWidth(),hide:!e.isVisible(),pinned:e.getPinned(),sort:s,sortIndex:a,aggFunc:i,rowGroup:e.isRowGroupActive(),rowGroupIndex:r,pivot:e.isPivotActive(),pivotIndex:o,flex:l};return u},t.prototype.getColumnState=function(){if(H(this.primaryColumns)||!this.isAlive())return[];var e=this.getPrimaryAndSecondaryAndAutoColumns(),r=e.map(this.createStateItemFromColumn.bind(this));return this.orderColumnStateList(r),r},t.prototype.orderColumnStateList=function(e){var r=Nt(this.gridColumns.map(function(o,i){return[o.getColId(),i]}));e.sort(function(o,i){var s=r.has(o.colId)?r.get(o.colId):-1,a=r.has(i.colId)?r.get(i.colId):-1;return s-a})},t.prototype.resetColumnState=function(e){var r=this;if(!Ge(this.primaryColumns)){var o=this.getColumnsFromTree(this.primaryColumnTree),i=[],s=1e3,a=1e3,l=[];this.groupAutoColumns&&(l=l.concat(this.groupAutoColumns)),o&&(l=l.concat(o)),l.forEach(function(u){var c=r.getColumnStateFromColDef(u);H(c.rowGroupIndex)&&c.rowGroup&&(c.rowGroupIndex=s++),H(c.pivotIndex)&&c.pivot&&(c.pivotIndex=a++),i.push(c)}),this.applyColumnState({state:i,applyOrder:!0},e)}},t.prototype.getColumnStateFromColDef=function(e){var r=function(m,C){return m??C??null},o=e.getColDef(),i=r(o.sort,o.initialSort),s=r(o.sortIndex,o.initialSortIndex),a=r(o.hide,o.initialHide),l=r(o.pinned,o.initialPinned),u=r(o.width,o.initialWidth),c=r(o.flex,o.initialFlex),p=r(o.rowGroupIndex,o.initialRowGroupIndex),d=r(o.rowGroup,o.initialRowGroup);p==null&&(d==null||d==!1)&&(p=null,d=null);var h=r(o.pivotIndex,o.initialPivotIndex),f=r(o.pivot,o.initialPivot);h==null&&(f==null||f==!1)&&(h=null,f=null);var y=r(o.aggFunc,o.initialAggFunc);return{colId:e.getColId(),sort:i,sortIndex:s,hide:a,pinned:l,width:u,flex:c,rowGroup:d,rowGroupIndex:p,pivot:f,pivotIndex:h,aggFunc:y}},t.prototype.applyColumnState=function(e,r){var o=this;if(Ge(this.primaryColumns))return!1;if(e&&e.state&&!e.state.forEach)return 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."),!1;var i=function(u,c,p){var d=o.compareColumnStatesAndDispatchEvents(r);o.autoGroupsNeedBuilding=!0;var h=c.slice(),f={},y={},m=[],C=[],w=0,E=o.rowGroupColumns.slice(),S=o.pivotColumns.slice();u.forEach(function(A){var M=A.colId||"",N=M.startsWith(Er);if(N){m.push(A),C.push(A);return}var I=p(M);I?(o.syncColumnWithStateItem(I,A,e.defaultState,f,y,!1,r),Ee(h,I)):(C.push(A),w+=1)});var R=function(A){return o.syncColumnWithStateItem(A,null,e.defaultState,f,y,!1,r)};h.forEach(R);var O=function(A,M,N,I){var W=A[N.getId()],ee=A[I.getId()],oe=W!=null,Z=ee!=null;if(oe&&Z)return W-ee;if(oe)return-1;if(Z)return 1;var te=M.indexOf(N),Q=M.indexOf(I),Ne=te>=0,ut=Q>=0;return Ne&&ut?te-Q:Ne?-1:1};o.rowGroupColumns.sort(O.bind(o,f,E)),o.pivotColumns.sort(O.bind(o,y,S)),o.updateGridColumns();var b=o.groupAutoColumns?o.groupAutoColumns.slice():[];return m.forEach(function(A){var M=o.getAutoColumn(A.colId);Ee(b,M),o.syncColumnWithStateItem(M,A,e.defaultState,null,null,!0,r)}),b.forEach(R),o.applyOrderAfterApplyState(e),o.updateDisplayedColumns(r),o.dispatchEverythingChanged(r),d(),{unmatchedAndAutoStates:C,unmatchedCount:w}};this.columnAnimationService.start();var s=i(e.state||[],this.primaryColumns||[],function(u){return o.getPrimaryColumn(u)}),a=s.unmatchedAndAutoStates,l=s.unmatchedCount;return(a.length>0||P(e.defaultState))&&(l=i(a,this.secondaryColumns||[],function(u){return o.getSecondaryColumn(u)}).unmatchedCount),this.columnAnimationService.finish(),l===0},t.prototype.applyOrderAfterApplyState=function(e){var r=this;if(!(!e.applyOrder||!e.state)){var o=[],i={};e.state.forEach(function(a){if(!(!a.colId||i[a.colId])){var l=r.gridColumnsMap[a.colId];l&&(o.push(l),i[a.colId]=!0)}});var s=0;if(this.gridColumns.forEach(function(a){var l=a.getColId(),u=i[l]!=null;if(!u){var c=l.startsWith(Er);c?Yr(o,a,s++):o.push(a)}}),o=this.placeLockedColumns(o),!this.doesMovePassMarryChildren(o)){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=o}},t.prototype.compareColumnStatesAndDispatchEvents=function(e){var r=this,o={rowGroupColumns:this.rowGroupColumns.slice(),pivotColumns:this.pivotColumns.slice(),valueColumns:this.valueColumns.slice()},i=this.getColumnState(),s={};return i.forEach(function(a){s[a.colId]=a}),function(){var a=r.getPrimaryAndSecondaryAndAutoColumns(),l=function(w,E,S,R){var O=E.map(R),b=S.map(R),A=Tt(O,b);if(!A){var M=new Set(E);S.forEach(function(W){M.delete(W)||M.add(W)});var N=ke([],Be(M),!1),I={type:w,columns:N,column:N.length===1?N[0]:null,source:e};r.eventService.dispatchEvent(I)}},u=function(w){var E=[];return a.forEach(function(S){var R=s[S.getColId()];R&&w(R,S)&&E.push(S)}),E},c=function(w){return w.getColId()};l(g.EVENT_COLUMN_ROW_GROUP_CHANGED,o.rowGroupColumns,r.rowGroupColumns,c),l(g.EVENT_COLUMN_PIVOT_CHANGED,o.pivotColumns,r.pivotColumns,c);var p=function(w,E){var S=w.aggFunc!=null,R=S!=E.isValueActive(),O=S&&w.aggFunc!=E.getAggFunc();return R||O},d=u(p);d.length>0&&r.dispatchColumnChangedEvent(g.EVENT_COLUMN_VALUE_CHANGED,d,e);var h=function(w,E){return w.width!=E.getActualWidth()};r.dispatchColumnResizedEvent(u(h),!0,e);var f=function(w,E){return w.pinned!=E.getPinned()};r.dispatchColumnPinnedEvent(u(f),e);var y=function(w,E){return w.hide==E.isVisible()};r.dispatchColumnVisibleEvent(u(y),e);var m=function(w,E){return w.sort!=E.getSort()||w.sortIndex!=E.getSortIndex()},C=u(m);C.length>0&&r.sortController.dispatchSortChangedEvents(e,C),r.normaliseColumnMovedEventForColumnState(i,e)}},t.prototype.getCommonValue=function(e,r){if(!(!e||e.length==0)){for(var o=r(e[0]),i=1;i=d&&e.setActualWidth(f,l)}var y=u("sort").value1;y!==void 0&&(y==="desc"||y==="asc"?e.setSort(y,l):e.setSort(void 0,l));var m=u("sortIndex").value1;if(m!==void 0&&e.setSortIndex(m),!(a||!e.isPrimary())){var C=u("aggFunc").value1;C!==void 0&&(typeof C=="string"?(e.setAggFunc(C),e.isValueActive()||(e.setValueActive(!0,l),this.valueColumns.push(e))):(P(C)&&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."),e.isValueActive()&&(e.setValueActive(!1,l),Ee(this.valueColumns,e))));var w=u("rowGroup","rowGroupIndex"),E=w.value1,S=w.value2;(E!==void 0||S!==void 0)&&(typeof S=="number"||E?(e.isRowGroupActive()||(e.setRowGroupActive(!0,l),this.rowGroupColumns.push(e)),i&&typeof S=="number"&&(i[e.getId()]=S)):e.isRowGroupActive()&&(e.setRowGroupActive(!1,l),Ee(this.rowGroupColumns,e)));var R=u("pivot","pivotIndex"),O=R.value1,b=R.value2;(O!==void 0||b!==void 0)&&(typeof b=="number"||O?(e.isPivotActive()||(e.setPivotActive(!0,l),this.pivotColumns.push(e)),s&&typeof b=="number"&&(s[e.getId()]=b)):e.isPivotActive()&&(e.setPivotActive(!1,l),Ee(this.pivotColumns,e)))}}},t.prototype.getGridColumns=function(e){return this.getColumns(e,this.getGridColumn.bind(this))},t.prototype.getColumns=function(e,r){var o=[];return e&&e.forEach(function(i){var s=r(i);s&&o.push(s)}),o},t.prototype.getColumnWithValidation=function(e){if(e==null)return null;var r=this.getGridColumn(e);return r||console.warn("AG Grid: could not find column "+e),r},t.prototype.getPrimaryColumn=function(e){return this.primaryColumns?this.getColumn(e,this.primaryColumns,this.primaryColumnsMap):null},t.prototype.getGridColumn=function(e){return this.getColumn(e,this.gridColumns,this.gridColumnsMap)},t.prototype.lookupGridColumn=function(e){return this.gridColumnsMap[e]},t.prototype.getSecondaryColumn=function(e){return this.secondaryColumns?this.getColumn(e,this.secondaryColumns,this.secondaryColumnsMap):null},t.prototype.getColumn=function(e,r,o){if(!e||!o)return null;if(typeof e=="string"&&o[e])return o[e];for(var i=0;i=0:f?b?S=C:A?S=E!=null&&E>=0:S=!1:S=r.indexOf(h)>=0,S){var M=f?w!=null||E!=null:w!=null;M?u.push(h):c.push(h)}});var p=function(h){var f=i(h.getColDef()),y=s(h.getColDef());return f??y};u.sort(function(h,f){var y=p(h),m=p(f);return y===m?0:y=0&&d.push(h)}),c.forEach(function(h){d.indexOf(h)<0&&d.push(h)}),r.forEach(function(h){d.indexOf(h)<0&&o(h,!1)}),d.forEach(function(h){r.indexOf(h)<0&&o(h,!0)}),d},t.prototype.extractPivotColumns=function(e,r){this.pivotColumns=this.extractColumns(r,this.pivotColumns,function(o,i){return o.setPivotActive(i,e)},function(o){return o.pivotIndex},function(o){return o.initialPivotIndex},function(o){return o.pivot},function(o){return o.initialPivot})},t.prototype.resetColumnGroupState=function(e){if(this.primaryColumnTree){var r=[];this.columnUtils.depthFirstOriginalTreeSearch(null,this.primaryColumnTree,function(o){if(o instanceof ie){var i=o.getColGroupDef(),s={groupId:o.getGroupId(),open:i?i.openByDefault:void 0};r.push(s)}}),this.setColumnGroupState(r,e)}},t.prototype.getColumnGroupState=function(){var e=[];return this.columnUtils.depthFirstOriginalTreeSearch(null,this.gridBalancedTree,function(r){r instanceof ie&&e.push({groupId:r.getGroupId(),open:r.isExpanded()})}),e},t.prototype.setColumnGroupState=function(e,r){var o=this;if(this.gridBalancedTree){this.columnAnimationService.start();var i=[];if(e.forEach(function(a){var l=a.groupId,u=a.open,c=o.getProvidedColumnGroup(l);c&&c.isExpanded()!==u&&(o.logger.log("columnGroupOpened("+c.getGroupId()+","+u+")"),c.setExpanded(u),i.push(c))}),this.updateGroupsAndDisplayedColumns(r),this.setFirstRightAndLastLeftPinned(r),i.length){var s={type:g.EVENT_COLUMN_GROUP_OPENED,columnGroup:ie.length===1?i[0]:void 0,columnGroups:i};this.eventService.dispatchEvent(s)}this.columnAnimationService.finish()}},t.prototype.setColumnGroupOpened=function(e,r,o){var i;e instanceof ie?i=e.getId():i=e||"",this.setColumnGroupState([{groupId:i,open:r}],o)},t.prototype.getProvidedColumnGroup=function(e){typeof e!="string"&&console.error("AG Grid: group key must be a string");var r=null;return this.columnUtils.depthFirstOriginalTreeSearch(null,this.gridBalancedTree,function(o){o instanceof ie&&o.getId()===e&&(r=o)}),r},t.prototype.calculateColumnsForDisplay=function(){var e=this,r;return this.pivotMode&&H(this.secondaryColumns)?r=this.gridColumns.filter(function(o){var i=e.groupAutoColumns&&ot(e.groupAutoColumns,o),s=e.valueColumns&&ot(e.valueColumns,o);return i||s}):r=this.gridColumns.filter(function(o){var i=e.groupAutoColumns&&ot(e.groupAutoColumns,o);return i||o.isVisible()}),r},t.prototype.checkColSpanActiveInCols=function(e){var r=!1;return e.forEach(function(o){P(o.getColDef().colSpan)&&(r=!0)}),r},t.prototype.calculateColumnsForGroupDisplay=function(){var e=this;this.groupDisplayColumns=[],this.groupDisplayColumnsMap={};var r=function(o){var i=o.getColDef(),s=i.showRowGroup;i&&P(s)&&(e.groupDisplayColumns.push(o),typeof s=="string"?e.groupDisplayColumnsMap[s]=o:s===!0&&e.getRowGroupColumns().forEach(function(a){e.groupDisplayColumnsMap[a.getId()]=o}))};this.gridColumns.forEach(r)},t.prototype.getGroupDisplayColumns=function(){return this.groupDisplayColumns},t.prototype.getGroupDisplayColumnForGroup=function(e){return this.groupDisplayColumnsMap[e]},t.prototype.updateDisplayedColumns=function(e){var r=this.calculateColumnsForDisplay();this.buildDisplayedTrees(r),this.updateGroupsAndDisplayedColumns(e),this.setFirstRightAndLastLeftPinned(e)},t.prototype.isSecondaryColumnsPresent=function(){return P(this.secondaryColumns)},t.prototype.setSecondaryColumns=function(e,r){var o=this;if(this.gridColumns){var i=e&&e.length>0;if(!(!i&&H(this.secondaryColumns))){if(i){this.processSecondaryColumnDefinitions(e);var s=this.columnFactory.createColumnTree(e,!1,this.secondaryBalancedTree||this.previousSecondaryColumns||void 0,r);this.destroyOldColumns(this.secondaryBalancedTree,s.columnTree),this.secondaryBalancedTree=s.columnTree,this.secondaryHeaderRowCount=s.treeDept+1,this.secondaryColumns=this.getColumnsFromTree(this.secondaryBalancedTree),this.secondaryColumnsMap={},this.secondaryColumns.forEach(function(a){return o.secondaryColumnsMap[a.getId()]=a}),this.previousSecondaryColumns=null}else this.previousSecondaryColumns=this.secondaryBalancedTree,this.secondaryBalancedTree=null,this.secondaryHeaderRowCount=-1,this.secondaryColumns=null,this.secondaryColumnsMap={};this.updateGridColumns(),this.updateDisplayedColumns(r)}}},t.prototype.processSecondaryColumnDefinitions=function(e){var r=this.gridOptionsService.get("processPivotResultColDef"),o=this.gridOptionsService.get("processPivotResultColGroupDef");if(!(!r&&!o)){var i=function(s){s.forEach(function(a){var l=P(a.children);if(l){var u=a;o&&o(u),i(u.children)}else{var c=a;r&&r(c)}})};e&&i(e)}},t.prototype.updateGridColumns=function(){var e=this,r=this.gridBalancedTree;this.gridColsArePrimary?this.lastPrimaryOrder=this.gridColumns:this.lastSecondaryOrder=this.gridColumns;var o=this.createGroupAutoColumnsIfNeeded();if(o){var i=Nt(this.groupAutoColumns.map(function(u){return[u,!0]}));this.lastPrimaryOrder&&(this.lastPrimaryOrder=this.lastPrimaryOrder.filter(function(u){return!i.has(u)}),this.lastPrimaryOrder=ke(ke([],Be(this.groupAutoColumns),!1),Be(this.lastPrimaryOrder),!1)),this.lastSecondaryOrder&&(this.lastSecondaryOrder=this.lastSecondaryOrder.filter(function(u){return!i.has(u)}),this.lastSecondaryOrder=ke(ke([],Be(this.groupAutoColumns),!1),Be(this.lastSecondaryOrder),!1))}var s;if(this.secondaryColumns&&this.secondaryBalancedTree){var a=this.secondaryColumns.some(function(u){return e.gridColumnsMap[u.getColId()]!==void 0});this.gridBalancedTree=this.secondaryBalancedTree.slice(),this.gridHeaderRowCount=this.secondaryHeaderRowCount,this.gridColumns=this.secondaryColumns.slice(),this.gridColsArePrimary=!1,a&&(s=this.lastSecondaryOrder)}else this.primaryColumns&&(this.gridBalancedTree=this.primaryColumnTree.slice(),this.gridHeaderRowCount=this.primaryHeaderRowCount,this.gridColumns=this.primaryColumns.slice(),this.gridColsArePrimary=!0,s=this.lastPrimaryOrder);if(this.addAutoGroupToGridColumns(),this.orderGridColsLike(s),this.gridColumns=this.placeLockedColumns(this.gridColumns),this.calculateColumnsForGroupDisplay(),this.refreshQuickFilterColumns(),this.clearDisplayedAndViewportColumns(),this.colSpanActive=this.checkColSpanActiveInCols(this.gridColumns),this.gridColumnsMap={},this.gridColumns.forEach(function(u){return e.gridColumnsMap[u.getId()]=u}),this.setAutoHeightActive(),!Tt(r,this.gridBalancedTree)){var l={type:g.EVENT_GRID_COLUMNS_CHANGED};this.eventService.dispatchEvent(l)}},t.prototype.setAutoHeightActive=function(){if(this.autoHeightActive=this.gridColumns.filter(function(r){return r.isAutoHeight()}).length>0,this.autoHeightActive){this.autoHeightActiveAtLeastOnce=!0;var e=this.gridOptionsService.isRowModelType("clientSide")||this.gridOptionsService.isRowModelType("serverSide");e||V("autoHeight columns only work with Client Side Row Model and Server Side Row Model.")}},t.prototype.orderGridColsLike=function(e){if(!H(e)){var r=Nt(e.map(function(c,p){return[c,p]})),o=!0;if(this.gridColumns.forEach(function(c){r.has(c)&&(o=!1)}),!o){var i=Nt(this.gridColumns.map(function(c){return[c,!0]})),s=e.filter(function(c){return i.has(c)}),a=Nt(s.map(function(c){return[c,!0]})),l=this.gridColumns.filter(function(c){return!a.has(c)}),u=s.slice();l.forEach(function(c){var p=c.getOriginalParent();if(!p){u.push(c);return}for(var d=[];!d.length&&p;){var h=p.getLeafColumns();h.forEach(function(m){var C=u.indexOf(m)>=0,w=d.indexOf(m)<0;C&&w&&d.push(m)}),p=p.getOriginalParent()}if(!d.length){u.push(c);return}var f=d.map(function(m){return u.indexOf(m)}),y=Math.max.apply(Math,ke([],Be(f),!1));Yr(u,c,y+1)}),this.gridColumns=u}}},t.prototype.isPrimaryColumnGroupsPresent=function(){return this.primaryHeaderRowCount>1},t.prototype.refreshQuickFilterColumns=function(){var e,r=(e=this.isPivotMode()?this.secondaryColumns:this.primaryColumns)!==null&&e!==void 0?e:[];this.groupAutoColumns&&(r=r.concat(this.groupAutoColumns)),this.columnsForQuickFilter=this.gridOptionsService.get("includeHiddenColumnsInQuickFilter")?r:r.filter(function(o){return o.isVisible()||o.isRowGroupActive()})},t.prototype.placeLockedColumns=function(e){var r=[],o=[],i=[];return e.forEach(function(s){var a=s.getColDef().lockPosition;a==="right"?i.push(s):a==="left"||a===!0?r.push(s):o.push(s)}),ke(ke(ke([],Be(r),!1),Be(o),!1),Be(i),!1)},t.prototype.addAutoGroupToGridColumns=function(){if(H(this.groupAutoColumns)){this.destroyOldColumns(this.groupAutoColsBalancedTree),this.groupAutoColsBalancedTree=null;return}this.gridColumns=this.groupAutoColumns?this.groupAutoColumns.concat(this.gridColumns):this.gridColumns;var e=this.columnFactory.createForAutoGroups(this.groupAutoColumns,this.gridBalancedTree);this.destroyOldColumns(this.groupAutoColsBalancedTree,e),this.groupAutoColsBalancedTree=e,this.gridBalancedTree=e.concat(this.gridBalancedTree)},t.prototype.clearDisplayedAndViewportColumns=function(){this.viewportRowLeft={},this.viewportRowRight={},this.viewportRowCenter={},this.displayedColumnsLeft=[],this.displayedColumnsRight=[],this.displayedColumnsCenter=[],this.displayedColumns=[],this.ariaOrderColumns=[],this.viewportColumns=[],this.headerViewportColumns=[],this.viewportColumnsHash=""},t.prototype.updateGroupsAndDisplayedColumns=function(e){this.updateOpenClosedVisibilityInColumnGroups(),this.deriveDisplayedColumns(e),this.refreshFlexedColumns(),this.extractViewport(),this.updateBodyWidths();var r={type:g.EVENT_DISPLAYED_COLUMNS_CHANGED};this.eventService.dispatchEvent(r)},t.prototype.deriveDisplayedColumns=function(e){this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeLeft,this.displayedColumnsLeft),this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeCentre,this.displayedColumnsCenter),this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeRight,this.displayedColumnsRight),this.joinColumnsAriaOrder(),this.joinDisplayedColumns(),this.setLeftValues(e),this.displayedAutoHeightCols=this.displayedColumns.filter(function(r){return r.isAutoHeight()})},t.prototype.isAutoRowHeightActive=function(){return this.autoHeightActive},t.prototype.wasAutoRowHeightEverActive=function(){return this.autoHeightActiveAtLeastOnce},t.prototype.joinColumnsAriaOrder=function(){var e,r,o=this.getAllGridColumns(),i=[],s=[],a=[];try{for(var l=un(o),u=l.next();!u.done;u=l.next()){var c=u.value,p=c.getPinned();p?p===!0||p==="left"?i.push(c):a.push(c):s.push(c)}}catch(d){e={error:d}}finally{try{u&&!u.done&&(r=l.return)&&r.call(l)}finally{if(e)throw e.error}}this.ariaOrderColumns=i.concat(s).concat(a)},t.prototype.joinDisplayedColumns=function(){this.gridOptionsService.get("enableRtl")?this.displayedColumns=this.displayedColumnsRight.concat(this.displayedColumnsCenter).concat(this.displayedColumnsLeft):this.displayedColumns=this.displayedColumnsLeft.concat(this.displayedColumnsCenter).concat(this.displayedColumnsRight)},t.prototype.setLeftValues=function(e){this.setLeftValuesOfColumns(e),this.setLeftValuesOfGroups()},t.prototype.setLeftValuesOfColumns=function(e){var r=this;if(this.primaryColumns){var o=this.getPrimaryAndSecondaryAndAutoColumns().slice(0),i=this.gridOptionsService.get("enableRtl");[this.displayedColumnsLeft,this.displayedColumnsRight,this.displayedColumnsCenter].forEach(function(s){if(i){var a=r.getWidthOfColsInList(s);s.forEach(function(u){a-=u.getActualWidth(),u.setLeft(a,e)})}else{var l=0;s.forEach(function(u){u.setLeft(l,e),l+=u.getActualWidth()})}Sa(o,s)}),o.forEach(function(s){s.setLeft(null,e)})}},t.prototype.setLeftValuesOfGroups=function(){[this.displayedTreeLeft,this.displayedTreeRight,this.displayedTreeCentre].forEach(function(e){e.forEach(function(r){if(r instanceof se){var o=r;o.checkLeft()}})})},t.prototype.derivedDisplayedColumnsFromDisplayedTree=function(e,r){r.length=0,this.columnUtils.depthFirstDisplayedColumnTreeSearch(e,function(o){o instanceof J&&r.push(o)})},t.prototype.isColumnVirtualisationSuppressed=function(){return this.suppressColumnVirtualisation||this.viewportRight===0},t.prototype.extractViewportColumns=function(){this.isColumnVirtualisationSuppressed()?(this.viewportColumnsCenter=this.displayedColumnsCenter,this.headerViewportColumnsCenter=this.displayedColumnsCenter):(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)},t.prototype.getVirtualHeaderGroupRow=function(e,r){var o;switch(e){case"left":o=this.viewportRowLeft[r];break;case"right":o=this.viewportRowRight[r];break;default:o=this.viewportRowCenter[r];break}return H(o)&&(o=[]),o},t.prototype.calculateHeaderRows=function(){this.viewportRowLeft={},this.viewportRowRight={},this.viewportRowCenter={};var e={};this.headerViewportColumns.forEach(function(o){return e[o.getId()]=!0});var r=function(o,i,s){for(var a=!1,l=0;l=0;l--)if(s.has(a[l])){i=l;break}}for(var u=0,c=[],p=0,d=0,l=0;li;h?(c.push(this.displayedColumnsCenter[l]),d+=this.displayedColumnsCenter[l].getFlex(),p+=(r=this.displayedColumnsCenter[l].getMinWidth())!==null&&r!==void 0?r:0):u+=this.displayedColumnsCenter[l].getActualWidth()}if(!c.length)return[];var f=[];u+p>this.flexViewportWidth&&(c.forEach(function(A){var M;return A.setActualWidth((M=A.getMinWidth())!==null&&M!==void 0?M:0,o)}),f=c,c=[]);var y=[],m;e:for(;;){m=this.flexViewportWidth-u;for(var C=m/d,l=0;lO&&(S=O),S){w.setActualWidth(S,o),rn(c,w),d-=w.getFlex(),f.push(w),u+=w.getActualWidth();continue e}y[l]=Math.round(E)}break}var b=m;return c.forEach(function(A,M){A.setActualWidth(Math.min(y[M],b),o),f.push(A),b-=y[M]}),e.skipSetLeft||this.setLeftValues(o),e.updateBodyWidths&&this.updateBodyWidths(),e.fireResizedEvent&&this.dispatchColumnResizedEvent(f,!0,o,c),c},t.prototype.sizeColumnsToFit=function(e,r,o,i){var s=this,a,l,u,c,p;if(r===void 0&&(r="sizeColumnsToFit"),this.shouldQueueResizeOperations){this.resizeOperationQueue.push(function(){return s.sizeColumnsToFit(e,r,o,i)});return}var d={};i&&((a=i==null?void 0:i.columnLimits)===null||a===void 0||a.forEach(function(Q){var Ne=Q.key,ut=np(Q,["key"]);d[typeof Ne=="string"?Ne:Ne.getColId()]=ut}));var h=this.getAllDisplayedColumns(),f=e===this.getWidthOfColsInList(h);if(!(e<=0||!h.length||f)){var y=[],m=[];h.forEach(function(Q){Q.getColDef().suppressSizeToFit===!0?m.push(Q):y.push(Q)});var C=y.slice(0),w=!1,E=function(Q){Ee(y,Q),m.push(Q)};for(y.forEach(function(Q){var Ne,ut;Q.resetActualWidth(r);var Lt=d==null?void 0:d[Q.getId()],la=(Ne=Lt==null?void 0:Lt.minWidth)!==null&&Ne!==void 0?Ne:i==null?void 0:i.defaultMinWidth,ua=(ut=Lt==null?void 0:Lt.maxWidth)!==null&&ut!==void 0?ut:i==null?void 0:i.defaultMaxWidth,gc=Q.getActualWidth();typeof la=="number"&&gcua&&Q.setActualWidth(ua,r,!0)});!w;){w=!0;var S=e-this.getWidthOfColsInList(m);if(S<=0)y.forEach(function(Q){var Ne,ut,Lt=(ut=(Ne=d==null?void 0:d[Q.getId()])===null||Ne===void 0?void 0:Ne.minWidth)!==null&&ut!==void 0?ut:i==null?void 0:i.defaultMinWidth;if(typeof Lt=="number"){Q.setActualWidth(Lt,r,!0);return}Q.setMinimum(r)});else for(var R=S/this.getWidthOfColsInList(y),O=S,b=y.length-1;b>=0;b--){var A=y[b],M=d==null?void 0:d[A.getId()],N=(l=M==null?void 0:M.minWidth)!==null&&l!==void 0?l:i==null?void 0:i.defaultMinWidth,I=(u=M==null?void 0:M.maxWidth)!==null&&u!==void 0?u:i==null?void 0:i.defaultMaxWidth,W=(c=A.getMinWidth())!==null&&c!==void 0?c:0,ee=(p=A.getMaxWidth())!==null&&p!==void 0?p:Number.MAX_VALUE,oe=typeof N=="number"&&N>W?N:A.getMinWidth(),Z=typeof I=="number"&&IZ?(te=Z,E(A),w=!1):b===0&&(te=O),A.setActualWidth(te,r,!0),O-=te}}C.forEach(function(Q){Q.fireColumnWidthChangedEvent(r)}),this.setLeftValues(r),this.updateBodyWidths(),!o&&this.dispatchColumnResizedEvent(C,!0,r)}},t.prototype.buildDisplayedTrees=function(e){var r=[],o=[],i=[];e.forEach(function(a){switch(a.getPinned()){case"left":r.push(a);break;case"right":o.push(a);break;default:i.push(a);break}});var s=new Pa;this.displayedTreeLeft=this.displayedGroupCreator.createDisplayedGroups(r,s,"left",this.displayedTreeLeft),this.displayedTreeRight=this.displayedGroupCreator.createDisplayedGroups(o,s,"right",this.displayedTreeRight),this.displayedTreeCentre=this.displayedGroupCreator.createDisplayedGroups(i,s,null,this.displayedTreeCentre),this.updateDisplayedMap()},t.prototype.updateDisplayedMap=function(){var e=this;this.displayedColumnsAndGroupsMap={};var r=function(o){e.displayedColumnsAndGroupsMap[o.getUniqueId()]=o};this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeCentre,r),this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeLeft,r),this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeRight,r)},t.prototype.isDisplayed=function(e){var r=this.displayedColumnsAndGroupsMap[e.getUniqueId()];return r===e},t.prototype.updateOpenClosedVisibilityInColumnGroups=function(){var e=this.getAllDisplayedTrees();this.columnUtils.depthFirstAllColumnTreeSearch(e,function(r){r instanceof se&&r.calculateDisplayedColumns()})},t.prototype.getGroupAutoColumns=function(){return this.groupAutoColumns},t.prototype.createGroupAutoColumnsIfNeeded=function(){var e=this.forceRecreateAutoGroups;if(this.forceRecreateAutoGroups=!1,!this.autoGroupsNeedBuilding)return!1;this.autoGroupsNeedBuilding=!1;var r=this.gridOptionsService.isGroupUseEntireRow(this.pivotMode),o=this.pivotMode?this.gridOptionsService.get("pivotSuppressAutoColumn"):this.isGroupSuppressAutoColumn(),i=this.rowGroupColumns.length>0||this.gridOptionsService.get("treeData"),s=i&&!o&&!r;if(s){var a=this.autoGroupColService.createAutoGroupColumns(this.rowGroupColumns),l=!this.autoColsEqual(a,this.groupAutoColumns);if(l||e)return this.groupAutoColumns=a,!0}else this.groupAutoColumns=null;return!1},t.prototype.isGroupSuppressAutoColumn=function(){var e=this.gridOptionsService.get("groupDisplayType"),r=e==="custom";if(r)return!0;var o=this.gridOptionsService.get("treeDataDisplayType");return o==="custom"},t.prototype.autoColsEqual=function(e,r){return Tt(e,r,function(o,i){return o.getColId()===i.getColId()})},t.prototype.getWidthOfColsInList=function(e){return e.reduce(function(r,o){return r+o.getActualWidth()},0)},t.prototype.getFirstDisplayedColumn=function(){var e=this.gridOptionsService.get("enableRtl"),r=["getDisplayedLeftColumns","getDisplayedCenterColumns","getDisplayedRightColumns"];e&&r.reverse();for(var o=0;oo},t.prototype.generateColumnStateForRowGroupAndPivotIndexes=function(e,r){var o=this,i={},s=function(a,l,u,c,p,d){if(!l.length||!o.primaryColumns)return[];for(var h=Object.keys(a),f=new Set(h),y=new Set(h),m=new Set(l.map(function(N){var I=N.getColId();return y.delete(I),I}).concat(h)),C=[],w={},E=0,S=0;S=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},up=function(n){ap(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.calculateColMinWidth=function(e){return e.minWidth!=null?e.minWidth:this.environment.getMinColWidth()},t.prototype.calculateColMaxWidth=function(e){return e.maxWidth!=null?e.maxWidth:Number.MAX_SAFE_INTEGER},t.prototype.calculateColInitialWidth=function(e){var r=this.calculateColMinWidth(e),o=this.calculateColMaxWidth(e),i,s=Mt(e.width),a=Mt(e.initialWidth);return s!=null?i=s:a!=null?i=a:i=200,Math.max(Math.min(i,o),r)},t.prototype.getOriginalPathForColumn=function(e,r){var o=[],i=!1,s=function(a,l){for(var u=0;u=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},dp=function(n){cp(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.createDisplayedGroups=function(e,r,o,i){for(var s=this,a=this.mapOldGroupsById(i),l=[],u=e,c=function(){var p=u;u=[];for(var d=0,h=function(R){var O=d;d=R;var b=p[O],A=b instanceof se?b.getProvidedColumnGroup():b,M=A.getOriginalParent();if(M==null){for(var N=O;N0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Vt=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Fa=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},gp=function(n){fp(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.componentsMappedByName={},e}return t.prototype.setupComponents=function(e){var r=this;e&&e.forEach(function(o){return r.addComponent(o)})},t.prototype.addComponent=function(e){var r=e.componentName.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),o=r.toUpperCase();this.componentsMappedByName[o]=e.componentClass},t.prototype.getComponentClass=function(e){return this.componentsMappedByName[e]},t=vp([x("agStackComponentsRegistry")],t),t}(D);function qe(n,t,e){e==null||typeof e=="string"&&e==""?pn(n,t):Qe(n,t,e)}function Qe(n,t,e){n.setAttribute(Ma(t),e.toString())}function pn(n,t){n.removeAttribute(Ma(t))}function Ma(n){return"aria-".concat(n)}function le(n,t){t?n.setAttribute("role",t):n.removeAttribute("role")}function Ia(n){var t;return n==="asc"?t="ascending":n==="desc"?t="descending":n==="mixed"?t="other":t="none",t}function yp(n){return parseInt(n.getAttribute("aria-level"),10)}function xa(n){return parseInt(n.getAttribute("aria-posinset"),10)}function Na(n){return n.getAttribute("aria-label")}function Ht(n,t){qe(n,"label",t)}function Uo(n,t){qe(n,"labelledby",t)}function mp(n,t){qe(n,"describedby",t)}function dn(n,t){qe(n,"live",t)}function Ga(n,t){qe(n,"atomic",t)}function Va(n,t){qe(n,"relevant",t)}function Ha(n,t){qe(n,"level",t)}function hn(n,t){qe(n,"disabled",t)}function zo(n,t){qe(n,"hidden",t)}function fn(n,t){qe(n,"activedescendant",t)}function Pt(n,t){Qe(n,"expanded",t)}function Ba(n){pn(n,"expanded")}function vn(n,t){Qe(n,"setsize",t)}function gn(n,t){Qe(n,"posinset",t)}function ka(n,t){Qe(n,"multiselectable",t)}function Wa(n,t){Qe(n,"rowcount",t)}function yn(n,t){Qe(n,"rowindex",t)}function ja(n,t){Qe(n,"colcount",t)}function mn(n,t){Qe(n,"colindex",t)}function Ua(n,t){Qe(n,"colspan",t)}function za(n,t){Qe(n,"sort",t)}function Ka(n){pn(n,"sort")}function Rr(n,t){qe(n,"selected",t)}function Cp(n,t){Qe(n,"checked",t===void 0?"mixed":t)}function Cn(n,t){qe(n,"controls",t.id),Uo(t,n.id)}function Sn(n,t){return t===void 0?n("ariaIndeterminate","indeterminate"):t===!0?n("ariaChecked","checked"):n("ariaUnchecked","unchecked")}var Sp=Object.freeze({__proto__:null,setAriaRole:le,getAriaSortState:Ia,getAriaLevel:yp,getAriaPosInSet:xa,getAriaLabel:Na,setAriaLabel:Ht,setAriaLabelledBy:Uo,setAriaDescribedBy:mp,setAriaLive:dn,setAriaAtomic:Ga,setAriaRelevant:Va,setAriaLevel:Ha,setAriaDisabled:hn,setAriaHidden:zo,setAriaActiveDescendant:fn,setAriaExpanded:Pt,removeAriaExpanded:Ba,setAriaSetSize:vn,setAriaPosInSet:gn,setAriaMultiSelectable:ka,setAriaRowCount:Wa,setAriaRowIndex:yn,setAriaColCount:ja,setAriaColIndex:mn,setAriaColSpan:Ua,setAriaSort:za,removeAriaSort:Ka,setAriaSelected:Rr,setAriaChecked:Cp,setAriaControls:Cn,getAriaCheckboxStateName:Sn}),wn,Ko,En,_n,Rn,On,Tn,Pn;function ht(){return wn===void 0&&(wn=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)),wn}function Dn(){if(Ko===void 0)if(ht()){var n=navigator.userAgent.match(/version\/(\d+)/i);n&&(Ko=n[1]!=null?parseFloat(n[1]):0)}else Ko=0;return Ko}function $o(){if(En===void 0){var n=window;En=!!n.chrome&&(!!n.chrome.webstore||!!n.chrome.runtime)||/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}return En}function An(){return _n===void 0&&(_n=/(firefox)/i.test(navigator.userAgent)),_n}function bn(){return Rn===void 0&&(Rn=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)),Rn}function Dt(){return On===void 0&&(On=/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1),On}function Fn(){return!ht()||Dn()>=15}function Yo(n){if(!n)return null;var t=n.tabIndex,e=n.getAttribute("tabIndex");return t===-1&&(e===null||e===""&&!An())?null:t.toString()}function $a(){if(!document.body)return-1;var n=1e6,t=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,e=document.createElement("div");for(document.body.appendChild(e);;){var r=n*2;if(e.style.height=r+"px",r>t||e.clientHeight!==r)break;n=r}return document.body.removeChild(e),n}function Ya(){var n,t,e;return(t=(n=document.body)===null||n===void 0?void 0:n.clientWidth)!==null&&t!==void 0?t:window.innerHeight||((e=document.documentElement)===null||e===void 0?void 0:e.clientWidth)||-1}function qa(){var n,t,e;return(t=(n=document.body)===null||n===void 0?void 0:n.clientHeight)!==null&&t!==void 0?t:window.innerHeight||((e=document.documentElement)===null||e===void 0?void 0:e.clientHeight)||-1}function Qa(){return Pn==null&&Xa(),Pn}function Xa(){var n=document.body,t=document.createElement("div");t.style.width=t.style.height="100px",t.style.opacity="0",t.style.overflow="scroll",t.style.msOverflowStyle="scrollbar",t.style.position="absolute",n.appendChild(t);var e=t.offsetWidth-t.clientWidth;e===0&&t.clientWidth===0&&(e=null),t.parentNode&&t.parentNode.removeChild(t),e!=null&&(Pn=e,Tn=e===0)}function Ln(){return Tn==null&&Xa(),Tn}var wp=Object.freeze({__proto__:null,isBrowserSafari:ht,getSafariVersion:Dn,isBrowserChrome:$o,isBrowserFirefox:An,isMacOsUserAgent:bn,isIOSUserAgent:Dt,browserSupportsPreventScroll:Fn,getTabIndex:Yo,getMaxDivHeight:$a,getBodyWidth:Ya,getBodyHeight:qa,getScrollbarWidth:Qa,isInvisibleScrollbar:Ln});function Or(n,t){return n.toString().padStart(t,"0")}function Ja(n,t){for(var e=[],r=n;r<=t;r++)e.push(r);return e}function Ep(n){return typeof n=="string"&&(n=parseInt(n,10)),typeof n=="number"?Math.floor(n):null}function _p(n,t){for(var e="",r=0;r>>=8;return e}function Rp(n,t,e){return typeof n!="number"?"":Mn(Math.round(n*100)/100,t,e)}function Mn(n,t,e){return typeof n!="number"?"":n.toString().replace(".",e).replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1".concat(t))}function Op(n){return n==null?null:n.reduce(function(t,e){return t+e},0)}var Tp=Object.freeze({__proto__:null,padStartWidthZeros:Or,createArrayOfNumbers:Ja,cleanNumber:Ep,decToHex:_p,formatNumberTwoDecimalPlacesAndCommas:Rp,formatNumberCommas:Mn,sum:Op}),In=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i};function Xe(n,t,e){if(t===void 0&&(t=!0),e===void 0&&(e="-"),!n)return null;var r=[n.getFullYear(),n.getMonth()+1,n.getDate()].map(function(o){return Or(o,2)}).join(e);return t&&(r+=" "+[n.getHours(),n.getMinutes(),n.getSeconds()].map(function(o){return Or(o,2)}).join(":")),r}var xn=function(n){if(n>3&&n<21)return"th";var t=n%10;switch(t){case 1:return"st";case 2:return"nd";case 3:return"rd"}return"th"};function Tr(n,t){t===void 0&&(t="YYYY-MM-DD");var e=Or(n.getFullYear(),4),r=["January","February","March","April","May","June","July","August","September","October","November","December"],o=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],i={YYYY:function(){return e.slice(e.length-4,e.length)},YY:function(){return e.slice(e.length-2,e.length)},Y:function(){return"".concat(n.getFullYear())},MMMM:function(){return r[n.getMonth()]},MMM:function(){return r[n.getMonth()].slice(0,3)},MM:function(){return Or(n.getMonth()+1,2)},Mo:function(){return"".concat(n.getMonth()+1).concat(xn(n.getMonth()+1))},M:function(){return"".concat(n.getMonth()+1)},Do:function(){return"".concat(n.getDate()).concat(xn(n.getDate()))},DD:function(){return Or(n.getDate(),2)},D:function(){return"".concat(n.getDate())},dddd:function(){return o[n.getDay()]},ddd:function(){return o[n.getDay()].slice(0,3)},dd:function(){return o[n.getDay()].slice(0,2)},do:function(){return"".concat(n.getDay()).concat(xn(n.getDay()))},d:function(){return"".concat(n.getDay())}},s=new RegExp(Object.keys(i).join("|"),"g");return t.replace(s,function(a){return a in i?i[a]():a})}function _e(n){if(!n)return null;var t=In(n.split(" "),2),e=t[0],r=t[1];if(!e)return null;var o=e.split("-").map(function(f){return parseInt(f,10)});if(o.filter(function(f){return!isNaN(f)}).length!==3)return null;var i=In(o,3),s=i[0],a=i[1],l=i[2],u=new Date(s,a-1,l);if(u.getFullYear()!==s||u.getMonth()!==a-1||u.getDate()!==l)return null;if(!r||r==="00:00:00")return u;var c=In(r.split(":").map(function(f){return parseInt(f,10)}),3),p=c[0],d=c[1],h=c[2];return p>=0&&p<24&&u.setHours(p),d>=0&&d<60&&u.setMinutes(d),h>=0&&h<60&&u.setSeconds(h),u}var Pp=Object.freeze({__proto__:null,serialiseDate:Xe,dateToFormattedString:Tr,parseDateTimeFromString:_e}),Dp=function(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],r=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Ap=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},qo;function Nn(n,t,e){for(var r=n.parentElement,o=r&&r.firstChild;o;)t&&o.classList.toggle(t,o===n),e&&o.classList.toggle(e,o!==n),o=o.nextSibling}var Za="[tabindex], input, select, button, textarea, [href]",Gn="[disabled], .ag-disabled:not(.ag-button), .ag-disabled *";function Vn(n){var t=Element.prototype.matches||Element.prototype.msMatchesSelector,e="input, select, button, textarea",r=t.call(n,e),o=t.call(n,Gn),i=We(n),s=r&&!o&&i;return s}function $(n,t,e){e===void 0&&(e={});var r=e.skipAriaHidden;n.classList.toggle("ag-hidden",!t),r||zo(n,!t)}function el(n,t,e){e===void 0&&(e={});var r=e.skipAriaHidden;n.classList.toggle("ag-invisible",!t),r||zo(n,!t)}function Pr(n,t){var e="disabled",r=t?function(o){return o.setAttribute(e,"")}:function(o){return o.removeAttribute(e)};r(n),zn(n.querySelectorAll("input"),function(o){return r(o)})}function or(n,t,e){for(var r=0;n;){if(n.classList.contains(t))return!0;if(n=n.parentElement,typeof e=="number"){if(++r>e)break}else if(n===e)break}return!1}function Bt(n){var t=window.getComputedStyle(n),e=t.height,r=t.width,o=t.borderTopWidth,i=t.borderRightWidth,s=t.borderBottomWidth,a=t.borderLeftWidth,l=t.paddingTop,u=t.paddingRight,c=t.paddingBottom,p=t.paddingLeft,d=t.marginTop,h=t.marginRight,f=t.marginBottom,y=t.marginLeft,m=t.boxSizing;return{height:parseFloat(e||"0"),width:parseFloat(r||"0"),borderTopWidth:parseFloat(o||"0"),borderRightWidth:parseFloat(i||"0"),borderBottomWidth:parseFloat(s||"0"),borderLeftWidth:parseFloat(a||"0"),paddingTop:parseFloat(l||"0"),paddingRight:parseFloat(u||"0"),paddingBottom:parseFloat(c||"0"),paddingLeft:parseFloat(p||"0"),marginTop:parseFloat(d||"0"),marginRight:parseFloat(h||"0"),marginBottom:parseFloat(f||"0"),marginLeft:parseFloat(y||"0"),boxSizing:m}}function qr(n){var t=Bt(n);return t.boxSizing==="border-box"?t.height-t.paddingTop-t.paddingBottom:t.height}function ir(n){var t=Bt(n);return t.boxSizing==="border-box"?t.width-t.paddingLeft-t.paddingRight:t.width}function Hn(n){var t=Bt(n),e=t.marginBottom+t.marginTop;return Math.ceil(n.offsetHeight+e)}function Qr(n){var t=Bt(n),e=t.marginLeft+t.marginRight;return Math.ceil(n.offsetWidth+e)}function Bn(n){var t=n.getBoundingClientRect(),e=Bt(n),r=e.borderTopWidth,o=e.borderLeftWidth,i=e.borderRightWidth,s=e.borderBottomWidth;return{top:t.top+(r||0),left:t.left+(o||0),right:t.right+(i||0),bottom:t.bottom+(s||0)}}function Xr(){if(typeof qo=="boolean")return qo;var n=document.createElement("div");return n.style.direction="rtl",n.style.width="1px",n.style.height="1px",n.style.position="fixed",n.style.top="0px",n.style.overflow="hidden",n.dir="rtl",n.innerHTML=`
+ + +
`,document.body.appendChild(n),n.scrollLeft=1,qo=Math.floor(n.scrollLeft)===0,document.body.removeChild(n),qo}function Jr(n,t){var e=n.scrollLeft;return t&&(e=Math.abs(e),$o()&&!Xr()&&(e=n.scrollWidth-n.clientWidth-e)),e}function Zr(n,t,e){e&&(Xr()?t*=-1:(ht()||$o())&&(t=n.scrollWidth-n.clientWidth-t)),n.scrollLeft=t}function de(n){for(;n&&n.firstChild;)n.removeChild(n.firstChild)}function ft(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function kn(n){return!!n.offsetParent}function We(n){var t=n;if(t.checkVisibility)return t.checkVisibility({checkVisibilityCSS:!0});var e=!kn(n)||window.getComputedStyle(n).visibility!=="visible";return!e}function Re(n){var t=document.createElement("div");return t.innerHTML=(n||"").trim(),t.firstChild}function Wn(n,t,e){e&&e.nextSibling===t||(e?e.nextSibling?n.insertBefore(t,e.nextSibling):n.appendChild(t):n.firstChild&&n.firstChild!==t&&n.insertAdjacentElement("afterbegin",t))}function jn(n,t){for(var e=0;e=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function sl(n,t,e){var r={},o=n.filter(function(i){return!t.some(function(s){return s===i})});return o.length>0&&o.forEach(function(i){return r[i]=ro(i,e).values}),r}function ro(n,t,e,r){var o,i,s=t.map(function(f,y){return{value:f,relevance:Mp(n.toLowerCase(),f.toLocaleLowerCase()),idx:y}});if(s.sort(function(f,y){return y.relevance-f.relevance}),e&&(s=s.filter(function(f){return f.relevance!==0})),s.length>0&&r&&r>0){var a=s[0].relevance,l=a*r;s=s.filter(function(f){return l-f.relevance<0})}var u=[],c=[];try{for(var p=Lp(s),d=p.next();!d.done;d=p.next()){var h=d.value;u.push(h.value),c.push(h.idx)}}catch(f){o={error:f}}finally{try{d&&!d.done&&(i=p.return)&&i.call(p)}finally{if(o)throw o.error}}return{values:u,indices:c}}function Mp(n,t){for(var e=n.replace(/\s/g,""),r=t.replace(/\s/g,""),o=0,i=-1,s=0;s-1||typeof o=="object"&&o["ag-icon"])return r}var i=document.createElement("span");return i.appendChild(r),i}function ne(n,t,e,r){var o=null,i=e&&e.getColDef().icons;if(i&&(o=i[n]),t&&!o){var s=t.get("icons");s&&(o=s[n])}if(o){var a=void 0;if(typeof o=="function")a=o();else if(typeof o=="string")a=o;else throw new Error("icon from grid options needs to be a string or a function");if(typeof a=="string")return Re(a);if(to(a))return a;console.warn("AG Grid: iconRenderer should return back a string or a dom object")}else{var l=document.createElement("span"),u=al[n];return u||(r?u=n:(console.warn("AG Grid: Did not find icon ".concat(n)),u="")),l.setAttribute("class","ag-icon ag-icon-".concat(u)),l.setAttribute("unselectable","on"),le(l,"presentation"),l}}var xp=Object.freeze({__proto__:null,iconNameClassMap:al,createIcon:Ze,createIconNoSpan:ne}),_=function(){function n(){}return n.BACKSPACE="Backspace",n.TAB="Tab",n.ENTER="Enter",n.ESCAPE="Escape",n.SPACE=" ",n.LEFT="ArrowLeft",n.UP="ArrowUp",n.RIGHT="ArrowRight",n.DOWN="ArrowDown",n.DELETE="Delete",n.F2="F2",n.PAGE_UP="PageUp",n.PAGE_DOWN="PageDown",n.PAGE_HOME="Home",n.PAGE_END="End",n.A="KeyA",n.C="KeyC",n.D="KeyD",n.V="KeyV",n.X="KeyX",n.Y="KeyY",n.Z="KeyZ",n}(),Np=65,Gp=67,Vp=86,Hp=68,Bp=90,kp=89;function Xo(n){if(n.altKey||n.ctrlKey||n.metaKey)return!1;var t=n.key.length===1;return t}function Jo(n,t,e,r,o){var i=r?r.getColDef().suppressKeyboardEvent:void 0;if(!i)return!1;var s=n.addGridCommonParams({event:t,editing:o,column:r,node:e,data:e.data,colDef:r.getColDef()});if(i){var a=i(s);if(a)return!0}return!1}function ll(n,t,e,r){var o=r.getDefinition(),i=o&&o.suppressHeaderKeyboardEvent;if(!P(i))return!1;var s=n.addGridCommonParams({colDef:o,column:r,headerRowIndex:e,event:t});return!!i(s)}function ul(n){var t=n.keyCode,e;switch(t){case Np:e=_.A;break;case Gp:e=_.C;break;case Vp:e=_.V;break;case Hp:e=_.D;break;case Bp:e=_.Z;break;case kp:e=_.Y;break;default:e=n.code}return e}function cl(n,t){return t===void 0&&(t=!1),n===_.DELETE?!0:!t&&n===_.BACKSPACE?bn():!1}var Wp=Object.freeze({__proto__:null,isEventFromPrintableCharacter:Xo,isUserSuppressingKeyboardEvent:Jo,isUserSuppressingHeaderKeyboardEvent:ll,normaliseQwertyAzerty:ul,isDeleteKey:cl});function $n(n,t,e){if(e===0)return!1;var r=Math.abs(n.clientX-t.clientX),o=Math.abs(n.clientY-t.clientY);return Math.max(r,o)<=e}var jp=Object.freeze({__proto__:null,areEventsNear:$n});function Up(n,t){if(!n)return!1;for(var e=function(a,l){var u=t[a.id],c=t[l.id],p=u!==void 0,d=c!==void 0,h=p&&d,f=!p&&!d;return h?u-c:f?a.__objectId-l.__objectId:p?1:-1},r,o,i=!1,s=0;s0){i=!0;break}return i?(n.sort(e),!0):!1}var zp=Object.freeze({__proto__:null,sortRowNodesByOrder:Up});function Yn(n){var t=new Set;return n.forEach(function(e){return t.add(e)}),t}var Kp=Object.freeze({__proto__:null,convertToSet:Yn}),ue=function(){return ue=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},st;(function(n){n[n.NOTHING=0]="NOTHING",n[n.WAITING_TO_SHOW=1]="WAITING_TO_SHOW",n[n.SHOWING=2]="SHOWING"})(st||(st={}));var gt;(function(n){n[n.HOVER=0]="HOVER",n[n.FOCUS=1]="FOCUS"})(gt||(gt={}));var pl=function(n){Yp(t,n);function t(e,r,o){var i=n.call(this)||this;return i.parentComp=e,i.tooltipShowDelayOverride=r,i.tooltipHideDelayOverride=o,i.SHOW_QUICK_TOOLTIP_DIFF=1e3,i.FADE_OUT_TOOLTIP_TIMEOUT=1e3,i.INTERACTIVE_HIDE_DELAY=100,i.interactionEnabled=!1,i.isInteractingWithTooltip=!1,i.state=st.NOTHING,i.tooltipInstanceCount=0,i.tooltipMouseTrack=!1,i}return t.prototype.postConstruct=function(){this.gridOptionsService.get("tooltipInteraction")&&(this.interactionEnabled=!0),this.tooltipTrigger=this.getTooltipTrigger(),this.tooltipMouseTrack=this.gridOptionsService.get("tooltipMouseTrack");var e=this.parentComp.getGui();this.tooltipTrigger===gt.HOVER&&(this.addManagedListener(e,"mouseenter",this.onMouseEnter.bind(this)),this.addManagedListener(e,"mouseleave",this.onMouseLeave.bind(this))),this.tooltipTrigger===gt.FOCUS&&(this.addManagedListener(e,"focusin",this.onFocusIn.bind(this)),this.addManagedListener(e,"focusout",this.onFocusOut.bind(this))),this.addManagedListener(e,"mousemove",this.onMouseMove.bind(this)),this.interactionEnabled||(this.addManagedListener(e,"mousedown",this.onMouseDown.bind(this)),this.addManagedListener(e,"keydown",this.onKeyDown.bind(this)))},t.prototype.getGridOptionsTooltipDelay=function(e){var r=this.gridOptionsService.get(e);return r<0&&V("".concat(e," should not be lower than 0")),Math.max(200,r)},t.prototype.getTooltipDelay=function(e){var r,o;return e==="show"?(r=this.tooltipShowDelayOverride)!==null&&r!==void 0?r:this.getGridOptionsTooltipDelay("tooltipShowDelay"):(o=this.tooltipHideDelayOverride)!==null&&o!==void 0?o:this.getGridOptionsTooltipDelay("tooltipHideDelay")},t.prototype.destroy=function(){this.setToDoNothing(),n.prototype.destroy.call(this)},t.prototype.getTooltipTrigger=function(){var e=this.gridOptionsService.get("tooltipTrigger");return!e||e==="hover"?gt.HOVER:gt.FOCUS},t.prototype.onMouseEnter=function(e){var r=this;this.interactionEnabled&&this.interactiveTooltipTimeoutId&&(this.unlockService(),this.startHideTimeout()),!Dt()&&(t.isLocked?this.showTooltipTimeoutId=window.setTimeout(function(){r.prepareToShowTooltip(e)},this.INTERACTIVE_HIDE_DELAY):this.prepareToShowTooltip(e))},t.prototype.onMouseMove=function(e){this.lastMouseEvent&&(this.lastMouseEvent=e),this.tooltipMouseTrack&&this.state===st.SHOWING&&this.tooltipComp&&this.positionTooltip()},t.prototype.onMouseDown=function(){this.setToDoNothing()},t.prototype.onMouseLeave=function(){this.interactionEnabled?this.lockService():this.setToDoNothing()},t.prototype.onFocusIn=function(){this.prepareToShowTooltip()},t.prototype.onFocusOut=function(e){var r,o=e.relatedTarget,i=this.parentComp.getGui(),s=(r=this.tooltipComp)===null||r===void 0?void 0:r.getGui();this.isInteractingWithTooltip||i.contains(o)||this.interactionEnabled&&(s!=null&&s.contains(o))||this.setToDoNothing()},t.prototype.onKeyDown=function(){this.setToDoNothing()},t.prototype.prepareToShowTooltip=function(e){if(this.state!=st.NOTHING||t.isLocked)return!1;var r=0;return e&&(r=this.isLastTooltipHiddenRecently()?200:this.getTooltipDelay("show")),this.lastMouseEvent=e||null,this.showTooltipTimeoutId=window.setTimeout(this.showTooltip.bind(this),r),this.state=st.WAITING_TO_SHOW,!0},t.prototype.isLastTooltipHiddenRecently=function(){var e=new Date().getTime(),r=t.lastTooltipHideTime;return e-r1){r.forEach(function(s){return e.addCssClass(s)});return}var o=this.cssClassStates[t]!==!0;if(o&&t.length){var i=this.getGui();i&&i.classList.add(t),this.cssClassStates[t]=!0}},n.prototype.removeCssClass=function(t){var e=this,r=(t||"").split(" ");if(r.length>1){r.forEach(function(s){return e.removeCssClass(s)});return}var o=this.cssClassStates[t]!==!1;if(o&&t.length){var i=this.getGui();i&&i.classList.remove(t),this.cssClassStates[t]=!1}},n.prototype.containsCssClass=function(t){var e=this.getGui();return e?e.classList.contains(t):!1},n.prototype.addOrRemoveCssClass=function(t,e){var r=this;if(t){if(t.indexOf(" ")>=0){var o=(t||"").split(" ");if(o.length>1){o.forEach(function(a){return r.addOrRemoveCssClass(a,e)});return}}var i=this.cssClassStates[t]!==e;if(i&&t.length){var s=this.getGui();s&&s.classList.toggle(t,e),this.cssClassStates[t]=e}}},n}(),Qp=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Qn=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Xp=new Dr,k=function(n){Qp(t,n);function t(e){var r=n.call(this)||this;return r.displayed=!0,r.visible=!0,r.compId=Xp.next(),r.cssClassManager=new qp(function(){return r.eGui}),e&&r.setTemplate(e),r}return t.prototype.preConstructOnComponent=function(){this.usingBrowserTooltips=this.gridOptionsService.get("enableBrowserTooltips")},t.prototype.getCompId=function(){return this.compId},t.prototype.getTooltipParams=function(){return{value:this.tooltipText,location:"UNKNOWN"}},t.prototype.setTooltip=function(e,r,o){var i=this,s=function(){i.usingBrowserTooltips?i.getGui().removeAttribute("title"):i.tooltipFeature=i.destroyBean(i.tooltipFeature)},a=function(){i.usingBrowserTooltips?i.getGui().setAttribute("title",i.tooltipText):i.tooltipFeature=i.createBean(new pl(i,r,o))};this.tooltipText!=e&&(this.tooltipText&&s(),e!=null&&(this.tooltipText=e,this.tooltipText&&a()))},t.prototype.createChildComponentsFromTags=function(e,r){var o=this,i=il(e.childNodes);i.forEach(function(s){if(s instanceof HTMLElement){var a=o.createComponentFromElement(s,function(u){var c=u.getGui();c&&o.copyAttributesFromNode(s,u.getGui())},r);if(a){if(a.addItems&&s.children.length){o.createChildComponentsFromTags(s,r);var l=Array.prototype.slice.call(s.children);a.addItems(l)}o.swapComponentForNode(a,e,s)}else s.childNodes&&o.createChildComponentsFromTags(s,r)}})},t.prototype.createComponentFromElement=function(e,r,o){var i=e.nodeName,s=o?o[e.getAttribute("ref")]:void 0,a=this.agStackComponentsRegistry.getComponentClass(i);if(a){t.elementGettingCreated=e;var l=new a(s);return l.setParentComponent(this),this.createBean(l,null,r),l}return null},t.prototype.copyAttributesFromNode=function(e,r){nl(e.attributes,function(o,i){return r.setAttribute(o,i)})},t.prototype.swapComponentForNode=function(e,r,o){var i=e.getGui();r.replaceChild(i,o),r.insertBefore(document.createComment(o.nodeName),i),this.addDestroyFunc(this.destroyBean.bind(this,e)),this.swapInComponentForQuerySelectors(e,o)},t.prototype.swapInComponentForQuerySelectors=function(e,r){var o=this;this.iterateOverQuerySelectors(function(i){o[i.attributeName]===r&&(o[i.attributeName]=e)})},t.prototype.iterateOverQuerySelectors=function(e){for(var r=Object.getPrototypeOf(this);r!=null;){var o=r.__agComponentMetaData,i=Vo(r.constructor);o&&o[i]&&o[i].querySelectors&&o[i].querySelectors.forEach(function(s){return e(s)}),r=Object.getPrototypeOf(r)}},t.prototype.activateTabIndex=function(e){var r=this.gridOptionsService.get("tabIndex");e||(e=[]),e.length||e.push(this.getGui()),e.forEach(function(o){return o.setAttribute("tabindex",r.toString())})},t.prototype.setTemplate=function(e,r){var o=Re(e);this.setTemplateFromElement(o,r)},t.prototype.setTemplateFromElement=function(e,r){this.eGui=e,this.eGui.__agComponent=this,this.wireQuerySelectors(),this.getContext()&&this.createChildComponentsFromTags(this.getGui(),r)},t.prototype.createChildComponentsPreConstruct=function(){this.getGui()&&this.createChildComponentsFromTags(this.getGui())},t.prototype.wireQuerySelectors=function(){var e=this;if(this.eGui){var r=this;this.iterateOverQuerySelectors(function(o){var i=function(l){return r[o.attributeName]=l},s=o.refSelector&&e.getAttribute("ref")===o.refSelector;if(s)i(e.eGui);else{var a=e.eGui.querySelector(o.querySelector);a&&i(a.__agComponent||a)}})}},t.prototype.getGui=function(){return this.eGui},t.prototype.getFocusableElement=function(){return this.eGui},t.prototype.getAriaElement=function(){return this.getFocusableElement()},t.prototype.setParentComponent=function(e){this.parentComponent=e},t.prototype.getParentComponent=function(){return this.parentComponent},t.prototype.setGui=function(e){this.eGui=e},t.prototype.queryForHtmlElement=function(e){return this.eGui.querySelector(e)},t.prototype.queryForHtmlInputElement=function(e){return this.eGui.querySelector(e)},t.prototype.appendChild=function(e,r){if(e!=null)if(r||(r=this.eGui),to(e))r.appendChild(e);else{var o=e;r.appendChild(o.getGui())}},t.prototype.isDisplayed=function(){return this.displayed},t.prototype.setVisible=function(e,r){if(r===void 0&&(r={}),e!==this.visible){this.visible=e;var o=r.skipAriaHidden;el(this.eGui,e,{skipAriaHidden:o})}},t.prototype.setDisplayed=function(e,r){if(r===void 0&&(r={}),e!==this.displayed){this.displayed=e;var o=r.skipAriaHidden;$(this.eGui,e,{skipAriaHidden:o});var i={type:t.EVENT_DISPLAYED_CHANGED,visible:this.displayed};this.dispatchEvent(i)}},t.prototype.destroy=function(){this.tooltipFeature&&(this.tooltipFeature=this.destroyBean(this.tooltipFeature)),this.parentComponent&&(this.parentComponent=void 0);var e=this.eGui;e&&e.__agComponent&&(e.__agComponent=void 0),n.prototype.destroy.call(this)},t.prototype.addGuiEventListener=function(e,r,o){var i=this;this.eGui.addEventListener(e,r,o),this.addDestroyFunc(function(){return i.eGui.removeEventListener(e,r)})},t.prototype.addCssClass=function(e){this.cssClassManager.addCssClass(e)},t.prototype.removeCssClass=function(e){this.cssClassManager.removeCssClass(e)},t.prototype.containsCssClass=function(e){return this.cssClassManager.containsCssClass(e)},t.prototype.addOrRemoveCssClass=function(e,r){this.cssClassManager.addOrRemoveCssClass(e,r)},t.prototype.getAttribute=function(e){var r=this.eGui;return r?r.getAttribute(e):null},t.prototype.getRefElement=function(e){return this.queryForHtmlElement('[ref="'.concat(e,'"]'))},t.EVENT_DISPLAYED_CHANGED="displayedChanged",Qn([v("agStackComponentsRegistry")],t.prototype,"agStackComponentsRegistry",void 0),Qn([va],t.prototype,"preConstructOnComponent",null),Qn([va],t.prototype,"createChildComponentsPreConstruct",null),t}(D);function L(n){return Jp.bind(this,"[ref=".concat(n,"]"),n)}function Jp(n,t,e,r,o){if(n===null){console.error("AG Grid: QuerySelector selector should not be null");return}if(typeof o=="number"){console.error("AG Grid: QuerySelector should be on an attribute");return}Zp(e,"querySelectors",{attributeName:r,querySelector:n,refSelector:t})}function Zp(n,t,e){var r=ed(n,Vo(n.constructor));r[t]||(r[t]=[]),r[t].push(e)}function ed(n,t){return n.__agComponentMetaData||(n.__agComponentMetaData={}),n.__agComponentMetaData[t]||(n.__agComponentMetaData[t]={}),n.__agComponentMetaData[t]}var td=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),dl=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},rd=function(n){td(t,n);function t(){return n.call(this,` + `)||this}return t.prototype.destroy=function(){n.prototype.destroy.call(this)},t.prototype.init=function(e){this.params=e;var r=this.columnModel.getDisplayNameForColumn(e.column,"header",!0),o=this.localeService.getLocaleTextFunc();this.eFloatingFilterText.setDisabled(!0).setInputAriaLabel("".concat(r," ").concat(o("ariaFilterInput","Filter Input")))},t.prototype.onParentModelChanged=function(e){var r=this;if(e==null){this.eFloatingFilterText.setValue("");return}this.params.parentFilterInstance(function(o){if(o.getModelAsString){var i=o.getModelAsString(e);r.eFloatingFilterText.setValue(i)}})},t.prototype.onParamsUpdated=function(e){this.refresh(e)},t.prototype.refresh=function(e){this.init(e)},dl([L("eFloatingFilterText")],t.prototype,"eFloatingFilterText",void 0),dl([v("columnModel")],t.prototype,"columnModel",void 0),t}(k),hl=function(){function n(t,e,r,o){var i=this;this.alive=!0,this.context=t,this.eParent=o;var s=e.getDateCompDetails(r),a=s.newAgStackInstance();a.then(function(l){if(!i.alive){t.destroyBean(l);return}i.dateComp=l,l&&(o.appendChild(l.getGui()),l.afterGuiAttached&&l.afterGuiAttached(),i.tempValue&&l.setDate(i.tempValue),i.disabled!=null&&i.setDateCompDisabled(i.disabled))})}return n.prototype.destroy=function(){this.alive=!1,this.dateComp=this.context.destroyBean(this.dateComp)},n.prototype.getDate=function(){return this.dateComp?this.dateComp.getDate():this.tempValue},n.prototype.setDate=function(t){this.dateComp?this.dateComp.setDate(t):this.tempValue=t},n.prototype.setDisabled=function(t){this.dateComp?this.setDateCompDisabled(t):this.disabled=t},n.prototype.setDisplayed=function(t){$(this.eParent,t)},n.prototype.setInputPlaceholder=function(t){this.dateComp&&this.dateComp.setInputPlaceholder&&this.dateComp.setInputPlaceholder(t)},n.prototype.setInputAriaLabel=function(t){this.dateComp&&this.dateComp.setInputAriaLabel&&this.dateComp.setInputAriaLabel(t)},n.prototype.afterGuiAttached=function(t){this.dateComp&&typeof this.dateComp.afterGuiAttached=="function"&&this.dateComp.afterGuiAttached(t)},n.prototype.updateParams=function(t){var e,r,o=!1;if(!((e=this.dateComp)===null||e===void 0)&&e.refresh&&typeof this.dateComp.refresh=="function"){var i=this.dateComp.refresh(t);i!==null&&(o=!0)}if(!o&&(!((r=this.dateComp)===null||r===void 0)&&r.onParamsUpdated)&&typeof this.dateComp.onParamsUpdated=="function"){var i=this.dateComp.onParamsUpdated(t);i!==null&&V("Custom date component method 'onParamsUpdated' is deprecated. Use 'refresh' instead.")}},n.prototype.setDateCompDisabled=function(t){this.dateComp!=null&&this.dateComp.setDisabled!=null&&this.dateComp.setDisabled(t)},n}(),fl=function(){function n(){this.customFilterOptions={}}return n.prototype.init=function(t,e){this.filterOptions=t.filterOptions||e,this.mapCustomOptions(),this.selectDefaultItem(t)},n.prototype.getFilterOptions=function(){return this.filterOptions},n.prototype.mapCustomOptions=function(){var t=this;this.filterOptions&&this.filterOptions.forEach(function(e){if(typeof e!="string"){var r=[["displayKey"],["displayName"],["predicate","test"]],o=function(i){return i.some(function(s){return e[s]!=null})?!0:(console.warn("AG Grid: ignoring FilterOptionDef as it doesn't contain one of '".concat(i,"'")),!1)};if(!r.every(o)){t.filterOptions=t.filterOptions.filter(function(i){return i===e})||[];return}t.customFilterOptions[e.displayKey]=e}})},n.prototype.selectDefaultItem=function(t){if(t.defaultOption)this.defaultOption=t.defaultOption;else if(this.filterOptions.length>=1){var e=this.filterOptions[0];typeof e=="string"?this.defaultOption=e:e.displayKey?this.defaultOption=e.displayKey:console.warn("AG Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'")}else console.warn("AG Grid: no filter options for filter")},n.prototype.getDefaultOption=function(){return this.defaultOption},n.prototype.getCustomOption=function(t){return this.customFilterOptions[t]},n}(),vl={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:"Does not equal",lessThan:"Less than",greaterThan:"Greater than",inRange:"Between",inRangeStart:"From",inRangeEnd:"To",lessThanOrEqual:"Less than or equal to",greaterThanOrEqual:"Greater than or equal to",contains:"Contains",notContains:"Does not contain",startsWith:"Begins with",endsWith:"Ends with",blank:"Blank",notBlank:"Not blank",before:"Before",after:"After",andCondition:"AND",orCondition:"OR",dateFormatOoo:"yyyy-mm-dd"},od=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Xn=function(){return Xn=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},ar=function(n){od(t,n);function t(e,r){r===void 0&&(r={});var o=n.call(this)||this;return o.eFocusableElement=e,o.callbacks=r,o.callbacks=Xn({shouldStopEventPropagation:function(){return!1},onTabKeyDown:function(i){if(!i.defaultPrevented){var s=o.focusService.findNextFocusableElement(o.eFocusableElement,!1,i.shiftKey);s&&(s.focus(),i.preventDefault())}}},r),o}return t.prototype.postConstruct=function(){this.eFocusableElement.classList.add(t.FOCUS_MANAGED_CLASS),this.addKeyDownListeners(this.eFocusableElement),this.callbacks.onFocusIn&&this.addManagedListener(this.eFocusableElement,"focusin",this.callbacks.onFocusIn),this.callbacks.onFocusOut&&this.addManagedListener(this.eFocusableElement,"focusout",this.callbacks.onFocusOut)},t.prototype.addKeyDownListeners=function(e){var r=this;this.addManagedListener(e,"keydown",function(o){if(!(o.defaultPrevented||nt(o))){if(r.callbacks.shouldStopEventPropagation(o)){it(o);return}o.key===_.TAB?r.callbacks.onTabKeyDown(o):r.callbacks.handleKeyDown&&r.callbacks.handleKeyDown(o)}})},t.FOCUS_MANAGED_CLASS="ag-focus-managed",gl([v("focusService")],t.prototype,"focusService",void 0),gl([F],t.prototype,"postConstruct",null),t}(D),id=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Jn=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},yl="ag-resizer-wrapper",nd='
+
+
+
+
+
+
+
+
+
`),ml=function(n){id(t,n);function t(e,r){var o=n.call(this)||this;return o.element=e,o.dragStartPosition={x:0,y:0},o.position={x:0,y:0},o.lastSize={width:-1,height:-1},o.positioned=!1,o.resizersAdded=!1,o.resizeListeners=[],o.boundaryEl=null,o.isResizing=!1,o.isMoving=!1,o.resizable={},o.movable=!1,o.currentResizer=null,o.config=Object.assign({},{popup:!1},r),o}return t.prototype.center=function(){var e=this.offsetParent,r=e.clientHeight,o=e.clientWidth,i=o/2-this.getWidth()/2,s=r/2-this.getHeight()/2;this.offsetElement(i,s)},t.prototype.initialisePosition=function(){if(!this.positioned){var e=this.config,r=e.centered,o=e.forcePopupParentAsOffsetParent,i=e.minWidth,s=e.width,a=e.minHeight,l=e.height,u=e.x,c=e.y;this.offsetParent||this.setOffsetParent();var p=0,d=0,h=We(this.element);if(h){var f=this.findBoundaryElement(),y=window.getComputedStyle(f);if(y.minWidth!=null){var m=f.offsetWidth-this.element.offsetWidth;d=parseInt(y.minWidth,10)-m}if(y.minHeight!=null){var C=f.offsetHeight-this.element.offsetHeight;p=parseInt(y.minHeight,10)-C}}if(this.minHeight=a||p,this.minWidth=i||d,s&&this.setWidth(s),l&&this.setHeight(l),(!s||!l)&&this.refreshSize(),r)this.center();else if(u||c)this.offsetElement(u,c);else if(h&&o){var f=this.boundaryEl,w=!0;if(f||(f=this.findBoundaryElement(),w=!1),f){var E=parseFloat(f.style.top),S=parseFloat(f.style.left);w?this.offsetElement(isNaN(S)?0:S,isNaN(E)?0:E):this.setPosition(S,E)}}this.positioned=!!this.offsetParent}},t.prototype.isPositioned=function(){return this.positioned},t.prototype.getPosition=function(){return this.position},t.prototype.setMovable=function(e,r){if(!(!this.config.popup||e===this.movable)){this.movable=e;var o=this.moveElementDragListener||{eElement:r,onDragStart:this.onMoveStart.bind(this),onDragging:this.onMove.bind(this),onDragStop:this.onMoveEnd.bind(this)};e?(this.dragService.addDragSource(o),this.moveElementDragListener=o):(this.dragService.removeDragSource(o),this.moveElementDragListener=void 0)}},t.prototype.setResizable=function(e){var r=this;if(this.clearResizeListeners(),e?this.addResizers():this.removeResizers(),typeof e=="boolean"){if(e===!1)return;e={topLeft:e,top:e,topRight:e,right:e,bottomRight:e,bottom:e,bottomLeft:e,left:e}}Object.keys(e).forEach(function(o){var i=e,s=!!i[o],a=r.getResizerElement(o),l={dragStartPixels:0,eElement:a,onDragStart:function(u){return r.onResizeStart(u,o)},onDragging:r.onResize.bind(r),onDragStop:function(u){return r.onResizeEnd(u,o)}};(s||!r.isAlive()&&!s)&&(s?(r.dragService.addDragSource(l),r.resizeListeners.push(l),a.style.pointerEvents="all"):a.style.pointerEvents="none",r.resizable[o]=s)})},t.prototype.removeSizeFromEl=function(){this.element.style.removeProperty("height"),this.element.style.removeProperty("width"),this.element.style.removeProperty("flex")},t.prototype.restoreLastSize=function(){this.element.style.flex="0 0 auto";var e=this.lastSize,r=e.height,o=e.width;o!==-1&&(this.element.style.width="".concat(o,"px")),r!==-1&&(this.element.style.height="".concat(r,"px"))},t.prototype.getHeight=function(){return this.element.offsetHeight},t.prototype.setHeight=function(e){var r=this.config.popup,o=this.element,i=!1;if(typeof e=="string"&&e.indexOf("%")!==-1)nr(o,e),e=Hn(o),i=!0;else if(e=Math.max(this.minHeight,e),this.positioned){var s=this.getAvailableHeight();s&&e>s&&(e=s)}this.getHeight()!==e&&(i?(o.style.maxHeight="unset",o.style.minHeight="unset"):r?nr(o,e):(o.style.height="".concat(e,"px"),o.style.flex="0 0 auto",this.lastSize.height=typeof e=="number"?e:parseFloat(e)))},t.prototype.getAvailableHeight=function(){var e=this.config,r=e.popup,o=e.forcePopupParentAsOffsetParent;this.positioned||this.initialisePosition();var i=this.offsetParent.clientHeight;if(!i)return null;var s=this.element.getBoundingClientRect(),a=this.offsetParent.getBoundingClientRect(),l=r?this.position.y:s.top,u=r?0:a.top,c=0;if(o){var p=this.element.parentElement;if(p){var d=p.getBoundingClientRect().bottom;c=d-s.bottom}}var h=i+u-l-c;return h},t.prototype.getWidth=function(){return this.element.offsetWidth},t.prototype.setWidth=function(e){var r=this.element,o=this.config.popup,i=!1;if(typeof e=="string"&&e.indexOf("%")!==-1)Je(r,e),e=Qr(r),i=!0;else if(this.positioned){e=Math.max(this.minWidth,e);var s=this.offsetParent.clientWidth,a=o?this.position.x:this.element.getBoundingClientRect().left;s&&e+a>s&&(e=s-a)}this.getWidth()!==e&&(i?(r.style.maxWidth="unset",r.style.minWidth="unset"):this.config.popup?Je(r,e):(r.style.width="".concat(e,"px"),r.style.flex=" unset",this.lastSize.width=typeof e=="number"?e:parseFloat(e)))},t.prototype.offsetElement=function(e,r){e===void 0&&(e=0),r===void 0&&(r=0);var o=this.config.forcePopupParentAsOffsetParent,i=o?this.boundaryEl:this.element;i&&(this.popupService.positionPopup({ePopup:i,keepWithinBounds:!0,skipObserver:this.movable||this.isResizable(),updatePosition:function(){return{x:e,y:r}}}),this.setPosition(parseFloat(i.style.left),parseFloat(i.style.top)))},t.prototype.constrainSizeToAvailableHeight=function(e){var r=this;if(this.config.forcePopupParentAsOffsetParent){var o=function(){var i=r.getAvailableHeight();r.element.style.setProperty("max-height","".concat(i,"px"))};e?this.resizeObserverSubscriber=this.resizeObserverService.observeResize(this.popupService.getPopupParent(),o):(this.element.style.removeProperty("max-height"),this.resizeObserverSubscriber&&(this.resizeObserverSubscriber(),this.resizeObserverSubscriber=void 0))}},t.prototype.setPosition=function(e,r){this.position.x=e,this.position.y=r},t.prototype.updateDragStartPosition=function(e,r){this.dragStartPosition={x:e,y:r}},t.prototype.calculateMouseMovement=function(e){var r=e.e,o=e.isLeft,i=e.isTop,s=e.anywhereWithin,a=e.topBuffer,l=r.clientX-this.dragStartPosition.x,u=r.clientY-this.dragStartPosition.y,c=this.shouldSkipX(r,!!o,!!s,l)?0:l,p=this.shouldSkipY(r,!!i,a,u)?0:u;return{movementX:c,movementY:p}},t.prototype.shouldSkipX=function(e,r,o,i){var s=this.element.getBoundingClientRect(),a=this.offsetParent.getBoundingClientRect(),l=this.boundaryEl.getBoundingClientRect(),u=this.config.popup?this.position.x:s.left,c=u<=0&&a.left>=e.clientX||a.right<=e.clientX&&a.right<=l.right;return c?!0:(r?c=i<0&&e.clientX>u+a.left||i>0&&e.clientXl.right||i>0&&e.clientXl.right||i>0&&e.clientX=e.clientY||a.bottom<=e.clientY&&a.bottom<=l.bottom;return c?!0:(r?c=i<0&&e.clientY>u+a.top+o||i>0&&e.clientYl.bottom||i>0&&e.clientYthis.element.parentElement.offsetHeight&&(N=!0),N||this.setHeight(M)}this.updateDragStartPosition(e.clientX,e.clientY),((o||i)&&w||E)&&this.offsetElement(m+w,C+E)}},t.prototype.onResizeEnd=function(e,r){this.isResizing=!1,this.currentResizer=null,this.boundaryEl=null;var o={type:"resize"};this.element.classList.remove("ag-resizing"),this.resizerMap[r].element.classList.remove("ag-active"),this.dispatchEvent(o)},t.prototype.refreshSize=function(){var e=this.element;this.config.popup&&(this.config.width||this.setWidth(e.offsetWidth),this.config.height||this.setHeight(e.offsetHeight))},t.prototype.onMoveStart=function(e){this.boundaryEl=this.findBoundaryElement(),this.positioned||this.initialisePosition(),this.isMoving=!0,this.element.classList.add("ag-moving"),this.updateDragStartPosition(e.clientX,e.clientY)},t.prototype.onMove=function(e){if(this.isMoving){var r=this.position,o=r.x,i=r.y,s;this.config.calculateTopBuffer&&(s=this.config.calculateTopBuffer());var a=this.calculateMouseMovement({e,isTop:!0,anywhereWithin:!0,topBuffer:s}),l=a.movementX,u=a.movementY;this.offsetElement(o+l,i+u),this.updateDragStartPosition(e.clientX,e.clientY)}},t.prototype.onMoveEnd=function(){this.isMoving=!1,this.boundaryEl=null,this.element.classList.remove("ag-moving")},t.prototype.setOffsetParent=function(){this.config.forcePopupParentAsOffsetParent?this.offsetParent=this.popupService.getPopupParent():this.offsetParent=this.element.offsetParent},t.prototype.findBoundaryElement=function(){for(var e=this.element;e;){if(window.getComputedStyle(e).position!=="static")return e;e=e.parentElement}return this.element},t.prototype.clearResizeListeners=function(){for(;this.resizeListeners.length;){var e=this.resizeListeners.pop();this.dragService.removeDragSource(e)}},t.prototype.destroy=function(){n.prototype.destroy.call(this),this.moveElementDragListener&&this.dragService.removeDragSource(this.moveElementDragListener),this.constrainSizeToAvailableHeight(!1),this.clearResizeListeners(),this.removeResizers()},Jn([v("popupService")],t.prototype,"popupService",void 0),Jn([v("resizeObserverService")],t.prototype,"resizeObserverService",void 0),Jn([v("dragService")],t.prototype,"dragService",void 0),t}(D),sd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Zn=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Zo=function(n){sd(t,n);function t(e){var r=n.call(this)||this;return r.filterNameKey=e,r.applyActive=!1,r.hidePopup=null,r.debouncePending=!1,r.appliedModel=null,r.buttonListeners=[],r}return t.prototype.postConstruct=function(){this.resetTemplate(),this.createManagedBean(new ar(this.getFocusableElement(),{handleKeyDown:this.handleKeyDown.bind(this)})),this.positionableFeature=new ml(this.getPositionableElement(),{forcePopupParentAsOffsetParent:!0}),this.createBean(this.positionableFeature)},t.prototype.handleKeyDown=function(e){},t.prototype.getFilterTitle=function(){return this.translate(this.filterNameKey)},t.prototype.isFilterActive=function(){return!!this.appliedModel},t.prototype.resetTemplate=function(e){var r=this.getGui();r&&r.removeEventListener("submit",this.onFormSubmit);var o=` +
+
+ `).concat(this.createBodyTemplate(),` +
+
`);this.setTemplate(o,e),r=this.getGui(),r&&r.addEventListener("submit",this.onFormSubmit)},t.prototype.isReadOnly=function(){return!!this.providedFilterParams.readOnly},t.prototype.init=function(e){var r=this;this.setParams(e),this.resetUiToDefaults(!0).then(function(){r.updateUiVisibility(),r.setupOnBtApplyDebounce()})},t.prototype.setParams=function(e){this.providedFilterParams=e,this.applyActive=t.isUseApplyButton(e),this.resetButtonsPanel()},t.prototype.updateParams=function(e){var r=this;this.providedFilterParams=e,this.applyActive=t.isUseApplyButton(e),this.resetUiToActiveModel(this.getModel(),function(){r.updateUiVisibility(),r.setupOnBtApplyDebounce()})},t.prototype.resetButtonsPanel=function(){var e=this,r=this.providedFilterParams.buttons,o=r&&r.length>0&&!this.isReadOnly();if(this.eButtonsPanel?(de(this.eButtonsPanel),this.buttonListeners.forEach(function(a){return a==null?void 0:a()}),this.buttonListeners=[]):o&&(this.eButtonsPanel=document.createElement("div"),this.eButtonsPanel.classList.add("ag-filter-apply-panel")),!o){this.eButtonsPanel&&ft(this.eButtonsPanel);return}var i=document.createDocumentFragment(),s=function(a){var l,u;switch(a){case"apply":l=e.translate("applyFilter"),u=function(d){return e.onBtApply(!1,!1,d)};break;case"clear":l=e.translate("clearFilter"),u=function(){return e.onBtClear()};break;case"reset":l=e.translate("resetFilter"),u=function(){return e.onBtReset()};break;case"cancel":l=e.translate("cancelFilter"),u=function(d){e.onBtCancel(d)};break;default:console.warn("AG Grid: Unknown button type specified");return}var c=a==="apply"?"submit":"button",p=Re(``));e.buttonListeners.push(e.addManagedListener(p,"click",u)),i.append(p)};Yn(r).forEach(function(a){return s(a)}),this.eButtonsPanel.append(i),this.getGui().appendChild(this.eButtonsPanel)},t.prototype.getDefaultDebounceMs=function(){return 0},t.prototype.setupOnBtApplyDebounce=function(){var e=this,r=t.getDebounceMs(this.providedFilterParams,this.getDefaultDebounceMs()),o=He(this.checkApplyDebounce.bind(this),r);this.onBtApplyDebounce=function(){e.debouncePending=!0,o()}},t.prototype.checkApplyDebounce=function(){this.debouncePending&&(this.debouncePending=!1,this.onBtApply())},t.prototype.getModel=function(){return this.appliedModel?this.appliedModel:null},t.prototype.setModel=function(e){var r=this,o=e!=null?this.setModelIntoUi(e):this.resetUiToDefaults();return o.then(function(){r.updateUiVisibility(),r.applyModel("api")})},t.prototype.onBtCancel=function(e){var r=this;this.resetUiToActiveModel(this.getModel(),function(){r.handleCancelEnd(e)})},t.prototype.handleCancelEnd=function(e){this.providedFilterParams.closeOnApply&&this.close(e)},t.prototype.resetUiToActiveModel=function(e,r){var o=this,i=function(){o.onUiChanged(!1,"prevent"),r==null||r()};e!=null?this.setModelIntoUi(e).then(i):this.resetUiToDefaults().then(i)},t.prototype.onBtClear=function(){var e=this;this.resetUiToDefaults().then(function(){return e.onUiChanged()})},t.prototype.onBtReset=function(){this.onBtClear(),this.onBtApply()},t.prototype.applyModel=function(e){var r=this.getModelFromUi();if(!this.isModelValid(r))return!1;var o=this.appliedModel;return this.appliedModel=r,!this.areModelsEqual(o,r)},t.prototype.isModelValid=function(e){return!0},t.prototype.onFormSubmit=function(e){e.preventDefault()},t.prototype.onBtApply=function(e,r,o){if(e===void 0&&(e=!1),r===void 0&&(r=!1),o&&o.preventDefault(),this.applyModel(r?"rowDataUpdated":"ui")){var i="columnFilter";this.providedFilterParams.filterChangedCallback({afterFloatingFilter:e,afterDataChange:r,source:i})}var s=this.providedFilterParams.closeOnApply;s&&this.applyActive&&!e&&!r&&this.close(o)},t.prototype.onNewRowsLoaded=function(){},t.prototype.close=function(e){if(this.hidePopup){var r=e,o=r&&r.key,i;(o==="Enter"||o==="Space")&&(i={keyboardEvent:r}),this.hidePopup(i),this.hidePopup=null}},t.prototype.onUiChanged=function(e,r){if(e===void 0&&(e=!1),this.updateUiVisibility(),this.providedFilterParams.filterModifiedCallback(),this.applyActive&&!this.isReadOnly()){var o=this.isModelValid(this.getModelFromUi()),i=this.getRefElement("applyFilterButton");i&&Pr(i,!o)}e&&!r||r==="immediately"?this.onBtApply(e):(!this.applyActive&&!r||r==="debounce")&&this.onBtApplyDebounce()},t.prototype.afterGuiAttached=function(e){e&&(this.hidePopup=e.hidePopup),this.refreshFilterResizer(e==null?void 0:e.container)},t.prototype.refreshFilterResizer=function(e){if(!(!this.positionableFeature||e==="toolPanel")){var r=e==="floatingFilter"||e==="columnFilter",o=this,i=o.positionableFeature,s=o.gridOptionsService;r?(i.restoreLastSize(),i.setResizable(s.get("enableRtl")?{bottom:!0,bottomLeft:!0,left:!0}:{bottom:!0,bottomRight:!0,right:!0})):(this.positionableFeature.removeSizeFromEl(),this.positionableFeature.setResizable(!1)),this.positionableFeature.constrainSizeToAvailableHeight(!0)}},t.prototype.afterGuiDetached=function(){this.checkApplyDebounce(),this.positionableFeature&&this.positionableFeature.constrainSizeToAvailableHeight(!1)},t.getDebounceMs=function(e,r){return t.isUseApplyButton(e)?(e.debounceMs!=null&&console.warn("AG Grid: debounceMs is ignored when apply button is present"),0):e.debounceMs!=null?e.debounceMs:r},t.isUseApplyButton=function(e){return!!e.buttons&&e.buttons.indexOf("apply")>=0},t.prototype.refresh=function(e){return this.providedFilterParams=e,!0},t.prototype.destroy=function(){var e=this.getGui();e&&e.removeEventListener("submit",this.onFormSubmit),this.hidePopup=null,this.positionableFeature&&(this.positionableFeature=this.destroyBean(this.positionableFeature)),this.appliedModel=null,n.prototype.destroy.call(this)},t.prototype.translate=function(e){var r=this.localeService.getLocaleTextFunc();return r(e,vl[e])},t.prototype.getCellValue=function(e){return this.providedFilterParams.getValue(e)},t.prototype.getPositionableElement=function(){return this.eFilterBody},Zn([v("rowModel")],t.prototype,"rowModel",void 0),Zn([L("eFilterBody")],t.prototype,"eFilterBody",void 0),Zn([F],t.prototype,"postConstruct",null),t}(k),ad=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ld=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Cl=function(n){ad(t,n);function t(e,r){var o=n.call(this,r)||this;return o.labelSeparator="",o.labelAlignment="left",o.disabled=!1,o.label="",o.config=e||{},o}return t.prototype.postConstruct=function(){this.addCssClass("ag-labeled"),this.eLabel.classList.add("ag-label");var e=this.config,r=e.labelSeparator,o=e.label,i=e.labelWidth,s=e.labelAlignment;r!=null&&this.setLabelSeparator(r),o!=null&&this.setLabel(o),i!=null&&this.setLabelWidth(i),this.setLabelAlignment(s||this.labelAlignment),this.refreshLabel()},t.prototype.refreshLabel=function(){de(this.eLabel),typeof this.label=="string"?this.eLabel.innerText=this.label+this.labelSeparator:this.label&&this.eLabel.appendChild(this.label),this.label===""?($(this.eLabel,!1),le(this.eLabel,"presentation")):($(this.eLabel,!0),le(this.eLabel,null))},t.prototype.setLabelSeparator=function(e){return this.labelSeparator===e?this:(this.labelSeparator=e,this.label!=null&&this.refreshLabel(),this)},t.prototype.getLabelId=function(){return this.eLabel.id=this.eLabel.id||"ag-".concat(this.getCompId(),"-label"),this.eLabel.id},t.prototype.getLabel=function(){return this.label},t.prototype.setLabel=function(e){return this.label===e?this:(this.label=e,this.refreshLabel(),this)},t.prototype.setLabelAlignment=function(e){var r=this.getGui(),o=r.classList;return o.toggle("ag-label-align-left",e==="left"),o.toggle("ag-label-align-right",e==="right"),o.toggle("ag-label-align-top",e==="top"),this},t.prototype.setLabelEllipsis=function(e){return this.eLabel.classList.toggle("ag-label-ellipsis",e),this},t.prototype.setLabelWidth=function(e){return this.label==null?this:(eo(this.eLabel,e),this)},t.prototype.setDisabled=function(e){e=!!e;var r=this.getGui();return Pr(r,e),r.classList.toggle("ag-disabled",e),this.disabled=e,this},t.prototype.isDisabled=function(){return!!this.disabled},ld([F],t.prototype,"postConstruct",null),t}(k),ud=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Sl=function(n){ud(t,n);function t(e,r,o){var i=n.call(this,e,r)||this;return i.className=o,i}return t.prototype.postConstruct=function(){n.prototype.postConstruct.call(this),this.className&&this.addCssClass(this.className),this.refreshAriaLabelledBy()},t.prototype.refreshAriaLabelledBy=function(){var e=this.getAriaElement(),r=this.getLabelId();Na(e)!==null?Uo(e,""):Uo(e,r??"")},t.prototype.setAriaLabel=function(e){return Ht(this.getAriaElement(),e),this.refreshAriaLabelledBy(),this},t.prototype.onValueChange=function(e){var r=this;return this.addManagedListener(this,g.EVENT_FIELD_VALUE_CHANGED,function(){return e(r.getValue())}),this},t.prototype.getWidth=function(){return this.getGui().clientWidth},t.prototype.setWidth=function(e){return Je(this.getGui(),e),this},t.prototype.getPreviousValue=function(){return this.previousValue},t.prototype.getValue=function(){return this.value},t.prototype.setValue=function(e,r){return this.value===e?this:(this.previousValue=this.value,this.value=e,r||this.dispatchEvent({type:g.EVENT_FIELD_VALUE_CHANGED}),this)},t}(Cl),cd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),oo=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},pd=` + `,wl=function(n){cd(t,n);function t(e){var r=n.call(this,e,(e==null?void 0:e.template)||pd,e==null?void 0:e.className)||this;if(r.isPickerDisplayed=!1,r.skipClick=!1,r.pickerGap=4,r.hideCurrentPicker=null,r.ariaRole=e==null?void 0:e.ariaRole,r.onPickerFocusIn=r.onPickerFocusIn.bind(r),r.onPickerFocusOut=r.onPickerFocusOut.bind(r),!e)return r;var o=e.pickerGap,i=e.maxPickerHeight,s=e.variableWidth,a=e.minPickerWidth,l=e.maxPickerWidth;return o!=null&&(r.pickerGap=o),r.variableWidth=!!s,i!=null&&r.setPickerMaxHeight(i),a!=null&&r.setPickerMinWidth(a),l!=null&&r.setPickerMaxWidth(l),r}return t.prototype.postConstruct=function(){n.prototype.postConstruct.call(this),this.setupAria();var e="ag-".concat(this.getCompId(),"-display");this.eDisplayField.setAttribute("id",e);var r=this.getAriaElement();this.addManagedListener(r,"keydown",this.onKeyDown.bind(this)),this.addManagedListener(this.eLabel,"mousedown",this.onLabelOrWrapperMouseDown.bind(this)),this.addManagedListener(this.eWrapper,"mousedown",this.onLabelOrWrapperMouseDown.bind(this));var o=this.config.pickerIcon;if(o){var i=ne(o,this.gridOptionsService);i&&this.eIcon.appendChild(i)}},t.prototype.setupAria=function(){var e=this.getAriaElement();e.setAttribute("tabindex",this.gridOptionsService.get("tabIndex").toString()),Pt(e,!1),this.ariaRole&&le(e,this.ariaRole)},t.prototype.onLabelOrWrapperMouseDown=function(e){if(e){var r=this.getFocusableElement();if(r!==this.eWrapper&&(e==null?void 0:e.target)===r)return;e.preventDefault(),this.getFocusableElement().focus()}if(this.skipClick){this.skipClick=!1;return}this.isDisabled()||(this.isPickerDisplayed?this.hidePicker():this.showPicker())},t.prototype.onKeyDown=function(e){switch(e.key){case _.UP:case _.DOWN:case _.ENTER:case _.SPACE:e.preventDefault(),this.onLabelOrWrapperMouseDown();break;case _.ESCAPE:this.isPickerDisplayed&&(e.preventDefault(),e.stopPropagation(),this.hideCurrentPicker&&this.hideCurrentPicker());break}},t.prototype.showPicker=function(){this.isPickerDisplayed=!0,this.pickerComponent||(this.pickerComponent=this.createPickerComponent());var e=this.pickerComponent.getGui();e.addEventListener("focusin",this.onPickerFocusIn),e.addEventListener("focusout",this.onPickerFocusOut),this.hideCurrentPicker=this.renderAndPositionPicker(),this.toggleExpandedStyles(!0)},t.prototype.renderAndPositionPicker=function(){var e=this,r=this.gridOptionsService.getDocument(),o=this.pickerComponent.getGui();this.gridOptionsService.get("suppressScrollWhenPopupsAreOpen")||(this.destroyMouseWheelFunc=this.addManagedListener(this.eventService,g.EVENT_BODY_SCROLL,function(){e.hidePicker()}));var i=this.localeService.getLocaleTextFunc(),s=this.config,a=s.pickerAriaLabelKey,l=s.pickerAriaLabelValue,u=s.modalPicker,c=u===void 0?!0:u,p={modal:c,eChild:o,closeOnEsc:!0,closedCallback:function(){var E=r.activeElement===r.body;e.beforeHidePicker(),E&&e.isAlive()&&e.getFocusableElement().focus()},ariaLabel:i(a,l)},d=this.popupService.addPopup(p),h=this,f=h.maxPickerHeight,y=h.minPickerWidth,m=h.maxPickerWidth,C=h.variableWidth;C?(y&&(o.style.minWidth=y),o.style.width=Qo(Qr(this.eWrapper)),m&&(o.style.maxWidth=m)):eo(o,m??Qr(this.eWrapper));var w=f??"".concat(qr(this.popupService.getPopupParent()),"px");return o.style.setProperty("max-height",w),o.style.position="absolute",this.alignPickerToComponent(),d.hideFunc},t.prototype.alignPickerToComponent=function(){if(this.pickerComponent){var e=this.config.pickerType,r=this.pickerGap,o=this.gridOptionsService.get("enableRtl")?"right":"left";this.popupService.positionPopupByComponent({type:e,eventSource:this.eWrapper,ePopup:this.pickerComponent.getGui(),position:"under",alignSide:o,keepWithinBounds:!0,nudgeY:r})}},t.prototype.beforeHidePicker=function(){this.destroyMouseWheelFunc&&(this.destroyMouseWheelFunc(),this.destroyMouseWheelFunc=void 0),this.toggleExpandedStyles(!1);var e=this.pickerComponent.getGui();e.removeEventListener("focusin",this.onPickerFocusIn),e.removeEventListener("focusout",this.onPickerFocusOut),this.isPickerDisplayed=!1,this.pickerComponent=void 0,this.hideCurrentPicker=null},t.prototype.toggleExpandedStyles=function(e){if(this.isAlive()){var r=this.getAriaElement();Pt(r,e),this.eWrapper.classList.toggle("ag-picker-expanded",e),this.eWrapper.classList.toggle("ag-picker-collapsed",!e)}},t.prototype.onPickerFocusIn=function(){this.togglePickerHasFocus(!0)},t.prototype.onPickerFocusOut=function(e){var r;!((r=this.pickerComponent)===null||r===void 0)&&r.getGui().contains(e.relatedTarget)||this.togglePickerHasFocus(!1)},t.prototype.togglePickerHasFocus=function(e){this.pickerComponent&&this.eWrapper.classList.toggle("ag-picker-has-focus",e)},t.prototype.hidePicker=function(){this.hideCurrentPicker&&this.hideCurrentPicker()},t.prototype.setInputWidth=function(e){return eo(this.eWrapper,e),this},t.prototype.getFocusableElement=function(){return this.eWrapper},t.prototype.setPickerGap=function(e){return this.pickerGap=e,this},t.prototype.setPickerMinWidth=function(e){return typeof e=="number"&&(e="".concat(e,"px")),this.minPickerWidth=e??void 0,this},t.prototype.setPickerMaxWidth=function(e){return typeof e=="number"&&(e="".concat(e,"px")),this.maxPickerWidth=e??void 0,this},t.prototype.setPickerMaxHeight=function(e){return typeof e=="number"&&(e="".concat(e,"px")),this.maxPickerHeight=e??void 0,this},t.prototype.destroy=function(){this.hidePicker(),n.prototype.destroy.call(this)},oo([v("popupService")],t.prototype,"popupService",void 0),oo([L("eLabel")],t.prototype,"eLabel",void 0),oo([L("eWrapper")],t.prototype,"eWrapper",void 0),oo([L("eDisplayField")],t.prototype,"eDisplayField",void 0),oo([L("eIcon")],t.prototype,"eIcon",void 0),t}(Sl),dd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),hd=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},El=function(n){dd(t,n);function t(e){e===void 0&&(e="default");var r=n.call(this,'
'))||this;return r.cssIdentifier=e,r.options=[],r.itemEls=[],r}return t.prototype.init=function(){this.addManagedListener(this.getGui(),"keydown",this.handleKeyDown.bind(this))},t.prototype.handleKeyDown=function(e){var r=e.key;switch(r){case _.ENTER:if(!this.highlightedEl)this.setValue(this.getValue());else{var o=this.itemEls.indexOf(this.highlightedEl);this.setValueByIndex(o)}break;case _.DOWN:case _.UP:var i=r===_.DOWN,s=void 0;if(e.preventDefault(),!this.highlightedEl)s=this.itemEls[i?0:this.itemEls.length-1];else{var a=this.itemEls.indexOf(this.highlightedEl),l=a+(i?1:-1);l=Math.min(Math.max(l,0),this.itemEls.length-1),s=this.itemEls[l]}this.highlightItem(s);break}},t.prototype.addOptions=function(e){var r=this;return e.forEach(function(o){return r.addOption(o)}),this},t.prototype.addOption=function(e){var r=e.value,o=e.text,i=ae(o||r);return this.options.push({value:r,text:i}),this.renderOption(r,i),this.updateIndices(),this},t.prototype.updateIndices=function(){var e=this.getGui().querySelectorAll(".ag-list-item");e.forEach(function(r,o){gn(r,o+1),vn(r,e.length)})},t.prototype.renderOption=function(e,r){var o=this,i=document.createElement("div");le(i,"option"),i.classList.add("ag-list-item","ag-".concat(this.cssIdentifier,"-list-item")),i.innerHTML="".concat(r,""),i.tabIndex=-1,this.itemEls.push(i),this.addManagedListener(i,"mouseover",function(){return o.highlightItem(i)}),this.addManagedListener(i,"mouseleave",function(){return o.clearHighlighted()}),this.addManagedListener(i,"click",function(){return o.setValue(e)}),this.getGui().appendChild(i)},t.prototype.setValue=function(e,r){if(this.value===e)return this.fireItemSelected(),this;if(e==null)return this.reset(),this;var o=this.options.findIndex(function(s){return s.value===e});if(o!==-1){var i=this.options[o];this.value=i.value,this.displayValue=i.text!=null?i.text:i.value,this.highlightItem(this.itemEls[o]),r||this.fireChangeEvent()}return this},t.prototype.setValueByIndex=function(e){return this.setValue(this.options[e].value)},t.prototype.getValue=function(){return this.value},t.prototype.getDisplayValue=function(){return this.displayValue},t.prototype.refreshHighlighted=function(){var e=this;this.clearHighlighted();var r=this.options.findIndex(function(o){return o.value===e.value});r!==-1&&this.highlightItem(this.itemEls[r])},t.prototype.reset=function(){this.value=null,this.displayValue=null,this.clearHighlighted(),this.fireChangeEvent()},t.prototype.highlightItem=function(e){We(e)&&(this.clearHighlighted(),this.highlightedEl=e,this.highlightedEl.classList.add(t.ACTIVE_CLASS),Rr(this.highlightedEl,!0),this.highlightedEl.focus())},t.prototype.clearHighlighted=function(){!this.highlightedEl||!We(this.highlightedEl)||(this.highlightedEl.classList.remove(t.ACTIVE_CLASS),Rr(this.highlightedEl,!1),this.highlightedEl=null)},t.prototype.fireChangeEvent=function(){this.dispatchEvent({type:g.EVENT_FIELD_VALUE_CHANGED}),this.fireItemSelected()},t.prototype.fireItemSelected=function(){this.dispatchEvent({type:t.EVENT_ITEM_SELECTED})},t.EVENT_ITEM_SELECTED="selectedItem",t.ACTIVE_CLASS="ag-active-item",hd([F],t.prototype,"init",null),t}(k),fd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),es=function(){return es=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},kt=function(n){vd(t,n);function t(e,r,o,i){o===void 0&&(o="text"),i===void 0&&(i="input");var s=n.call(this,e,` +
+
+ +
`),r)||this;return s.inputType=o,s.displayFieldTag=i,s}return t.prototype.postConstruct=function(){n.prototype.postConstruct.call(this),this.setInputType(),this.eLabel.classList.add("".concat(this.className,"-label")),this.eWrapper.classList.add("".concat(this.className,"-input-wrapper")),this.eInput.classList.add("".concat(this.className,"-input")),this.addCssClass("ag-input-field"),this.eInput.id=this.eInput.id||"ag-".concat(this.getCompId(),"-input");var e=this.config,r=e.width,o=e.value;r!=null&&this.setWidth(r),o!=null&&this.setValue(o),this.addInputListeners(),this.activateTabIndex([this.eInput])},t.prototype.addInputListeners=function(){var e=this;this.addManagedListener(this.eInput,"input",function(r){return e.setValue(r.target.value)})},t.prototype.setInputType=function(){this.displayFieldTag==="input"&&this.eInput.setAttribute("type",this.inputType)},t.prototype.getInputElement=function(){return this.eInput},t.prototype.setInputWidth=function(e){return eo(this.eWrapper,e),this},t.prototype.setInputName=function(e){return this.getInputElement().setAttribute("name",e),this},t.prototype.getFocusableElement=function(){return this.eInput},t.prototype.setMaxLength=function(e){var r=this.eInput;return r.maxLength=e,this},t.prototype.setInputPlaceholder=function(e){return vt(this.eInput,"placeholder",e),this},t.prototype.setInputAriaLabel=function(e){return Ht(this.eInput,e),this.refreshAriaLabelledBy(),this},t.prototype.setDisabled=function(e){return Pr(this.eInput,e),n.prototype.setDisabled.call(this,e)},t.prototype.setAutoComplete=function(e){if(e===!0)vt(this.eInput,"autocomplete",null);else{var r=typeof e=="string"?e:"off";vt(this.eInput,"autocomplete",r)}return this},ts([L("eLabel")],t.prototype,"eLabel",void 0),ts([L("eWrapper")],t.prototype,"eWrapper",void 0),ts([L("eInput")],t.prototype,"eInput",void 0),t}(Sl),gd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ti=function(n){gd(t,n);function t(e,r,o){r===void 0&&(r="ag-checkbox"),o===void 0&&(o="checkbox");var i=n.call(this,e,r,o)||this;return i.labelAlignment="right",i.selected=!1,i.readOnly=!1,i.passive=!1,i}return t.prototype.addInputListeners=function(){this.addManagedListener(this.eInput,"click",this.onCheckboxClick.bind(this)),this.addManagedListener(this.eLabel,"click",this.toggle.bind(this))},t.prototype.getNextValue=function(){return this.selected===void 0?!0:!this.selected},t.prototype.setPassive=function(e){this.passive=e},t.prototype.isReadOnly=function(){return this.readOnly},t.prototype.setReadOnly=function(e){this.eWrapper.classList.toggle("ag-disabled",e),this.eInput.disabled=e,this.readOnly=e},t.prototype.setDisabled=function(e){return this.eWrapper.classList.toggle("ag-disabled",e),n.prototype.setDisabled.call(this,e)},t.prototype.toggle=function(){if(!this.eInput.disabled){var e=this.isSelected(),r=this.getNextValue();this.passive?this.dispatchChange(r,e):this.setValue(r)}},t.prototype.getValue=function(){return this.isSelected()},t.prototype.setValue=function(e,r){return this.refreshSelectedClass(e),this.setSelected(e,r),this},t.prototype.setName=function(e){var r=this.getInputElement();return r.name=e,this},t.prototype.isSelected=function(){return this.selected},t.prototype.setSelected=function(e,r){this.isSelected()!==e&&(this.previousValue=this.isSelected(),e=this.selected=typeof e=="boolean"?e:void 0,this.eInput.checked=e,this.eInput.indeterminate=e===void 0,r||this.dispatchChange(this.selected,this.previousValue))},t.prototype.dispatchChange=function(e,r,o){this.dispatchEvent({type:g.EVENT_FIELD_VALUE_CHANGED,selected:e,previousValue:r,event:o});var i=this.getInputElement(),s={type:g.EVENT_CHECKBOX_CHANGED,id:i.id,name:i.name,selected:e,previousValue:r};this.eventService.dispatchEvent(s)},t.prototype.onCheckboxClick=function(e){if(!(this.passive||this.eInput.disabled)){var r=this.isSelected(),o=this.selected=e.target.checked;this.refreshSelectedClass(o),this.dispatchChange(o,r,e)}},t.prototype.refreshSelectedClass=function(e){this.eWrapper.classList.toggle("ag-checked",e===!0),this.eWrapper.classList.toggle("ag-indeterminate",e==null)},t}(kt),yd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),_l=function(n){yd(t,n);function t(e){return n.call(this,e,"ag-radio-button","radio")||this}return t.prototype.isSelected=function(){return this.eInput.checked},t.prototype.toggle=function(){this.eInput.disabled||this.isSelected()||this.setValue(!0)},t.prototype.addInputListeners=function(){n.prototype.addInputListeners.call(this),this.addManagedListener(this.eventService,g.EVENT_CHECKBOX_CHANGED,this.onChange.bind(this))},t.prototype.onChange=function(e){e.selected&&e.name&&this.eInput.name&&this.eInput.name===e.name&&e.id&&this.eInput.id!==e.id&&this.setValue(!1,!0)},t}(ti),md=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Cd=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Sd=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r=0?0:e===t.IN_RANGE?2:1},t.prototype.onFloatingFilterChanged=function(e,r){this.setTypeFromFloatingFilter(e),this.setValueFromFloatingFilter(r),this.onUiChanged(!0)},t.prototype.setTypeFromFloatingFilter=function(e){var r=this;this.eTypes.forEach(function(o,i){i===0?o.setValue(e,!0):o.setValue(r.optionsFactory.getDefaultOption(),!0)})},t.prototype.getModelFromUi=function(){var e=this.getUiCompleteConditions();return e.length===0?null:this.maxNumConditions>1&&e.length>1?{filterType:this.getFilterType(),operator:this.getJoinOperator(),condition1:e[0],condition2:e[1],conditions:e}:e[0]},t.prototype.getConditionTypes=function(){return this.eTypes.map(function(e){return e.getValue()})},t.prototype.getConditionType=function(e){return this.eTypes[e].getValue()},t.prototype.getJoinOperator=function(){return this.eJoinOperatorsOr.length===0?this.defaultJoinOperator:this.eJoinOperatorsOr[0].getValue()===!0?"OR":"AND"},t.prototype.areModelsEqual=function(e,r){var o=this;if(!e&&!r)return!0;if(!e&&r||e&&!r)return!1;var i=!e.operator,s=!r.operator,a=!i&&s||i&&!s;if(a)return!1;var l;if(i){var u=e,c=r;l=this.areSimpleModelsEqual(u,c)}else{var p=e,d=r;l=p.operator===d.operator&&Tt(p.conditions,d.conditions,function(h,f){return o.areSimpleModelsEqual(h,f)})}return l},t.prototype.shouldRefresh=function(e){var r,o,i,s=this.getModel(),a=s?(r=s.conditions)!==null&&r!==void 0?r:[s]:null,l=(i=(o=e.filterOptions)===null||o===void 0?void 0:o.map(function(c){return typeof c=="string"?c:c.displayKey}))!==null&&i!==void 0?i:this.getDefaultFilterOptions(),u=!a||a.every(function(c){return l.find(function(p){return p===c.type})!==void 0});return!(!u||typeof e.maxNumConditions=="number"&&a&&a.length>e.maxNumConditions)},t.prototype.refresh=function(e){if(!this.shouldRefresh(e))return!1;var r=n.prototype.refresh.call(this,e);return r?(this.setParams(e),this.removeConditionsAndOperators(0),this.createOption(),this.setModel(this.getModel()),!0):!1},t.prototype.setModelIntoUi=function(e){var r=this,o=e.operator;if(o){var i=e;i.conditions||(i.conditions=[i.condition1,i.condition2]);var s=this.validateAndUpdateConditions(i.conditions),a=this.getNumConditions();if(sa)for(var l=a;l1&&this.removeConditionsAndOperators(1),this.eTypes[0].setValue(c.type,!0),this.setConditionIntoUi(c,0)}return this.lastUiCompletePosition=this.getNumConditions()-1,this.createMissingConditionsAndOperators(),this.onUiChanged(),je.resolve()},t.prototype.validateAndUpdateConditions=function(e){var r=e.length;return r>this.maxNumConditions&&(e.splice(this.maxNumConditions),V('Filter Model contains more conditions than "filterParams.maxNumConditions". Additional conditions have been ignored.'),r=this.maxNumConditions),r},t.prototype.doesFilterPass=function(e){var r=this,o,i=this.getModel();if(i==null)return!0;var s=i.operator,a=[];if(s){var l=i;a.push.apply(a,Sd([],Cd((o=l.conditions)!==null&&o!==void 0?o:[]),!1))}else a.push(i);var u=s&&s==="OR"?"some":"every";return a[u](function(c){return r.individualConditionPasses(e,c)})},t.prototype.setParams=function(e){n.prototype.setParams.call(this,e),this.setNumConditions(e),this.defaultJoinOperator=this.getDefaultJoinOperator(e.defaultJoinOperator),this.filterPlaceholder=e.filterPlaceholder,this.optionsFactory=new fl,this.optionsFactory.init(e,this.getDefaultFilterOptions()),this.createFilterListOptions(),this.createOption(),this.createMissingConditionsAndOperators(),this.isReadOnly()&&this.eFilterBody.setAttribute("tabindex","-1")},t.prototype.setNumConditions=function(e){var r,o;e.suppressAndOrCondition!=null&&V('Since v29.2 "filterParams.suppressAndOrCondition" is deprecated. Use "filterParams.maxNumConditions = 1" instead.'),e.alwaysShowBothConditions!=null&&V('Since v29.2 "filterParams.alwaysShowBothConditions" is deprecated. Use "filterParams.numAlwaysVisibleConditions = 2" instead.'),this.maxNumConditions=(r=e.maxNumConditions)!==null&&r!==void 0?r:e.suppressAndOrCondition?1:2,this.maxNumConditions<1&&(V('"filterParams.maxNumConditions" must be greater than or equal to zero.'),this.maxNumConditions=1),this.numAlwaysVisibleConditions=(o=e.numAlwaysVisibleConditions)!==null&&o!==void 0?o:e.alwaysShowBothConditions?2:1,this.numAlwaysVisibleConditions<1&&(V('"filterParams.numAlwaysVisibleConditions" must be greater than or equal to zero.'),this.numAlwaysVisibleConditions=1),this.numAlwaysVisibleConditions>this.maxNumConditions&&(V('"filterParams.numAlwaysVisibleConditions" cannot be greater than "filterParams.maxNumConditions".'),this.numAlwaysVisibleConditions=this.maxNumConditions)},t.prototype.createOption=function(){var e=this,r=this.createManagedBean(new ei);this.eTypes.push(r),r.addCssClass("ag-filter-select"),this.eFilterBody.appendChild(r.getGui());var o=this.createValueElement();this.eConditionBodies.push(o),this.eFilterBody.appendChild(o),this.putOptionsIntoDropdown(r),this.resetType(r);var i=this.getNumConditions()-1;this.forEachPositionInput(i,function(s){return e.resetInput(s)}),this.addChangedListeners(r,i)},t.prototype.createJoinOperatorPanel=function(){var e=document.createElement("div");this.eJoinOperatorPanels.push(e),e.classList.add("ag-filter-condition");var r=this.createJoinOperator(this.eJoinOperatorsAnd,e,"and"),o=this.createJoinOperator(this.eJoinOperatorsOr,e,"or");this.eFilterBody.appendChild(e);var i=this.eJoinOperatorPanels.length-1,s=this.joinOperatorId++;this.resetJoinOperatorAnd(r,i,s),this.resetJoinOperatorOr(o,i,s),this.isReadOnly()||(r.onValueChange(this.listener),o.onValueChange(this.listener))},t.prototype.createJoinOperator=function(e,r,o){var i=this.createManagedBean(new _l);return e.push(i),i.addCssClass("ag-filter-condition-operator"),i.addCssClass("ag-filter-condition-operator-".concat(o)),r.appendChild(i.getGui()),i},t.prototype.getDefaultJoinOperator=function(e){return e==="AND"||e==="OR"?e:"AND"},t.prototype.createFilterListOptions=function(){var e=this,r=this.optionsFactory.getFilterOptions();this.filterListOptions=r.map(function(o){return typeof o=="string"?e.createBoilerplateListOption(o):e.createCustomListOption(o)})},t.prototype.putOptionsIntoDropdown=function(e){this.filterListOptions.forEach(function(r){e.addOption(r)}),e.setDisabled(this.filterListOptions.length<=1)},t.prototype.createBoilerplateListOption=function(e){return{value:e,text:this.translate(e)}},t.prototype.createCustomListOption=function(e){var r=e.displayKey,o=this.optionsFactory.getCustomOption(e.displayKey);return{value:r,text:o?this.localeService.getLocaleTextFunc()(o.displayKey,o.displayName):this.translate(r)}},t.prototype.isAllowTwoConditions=function(){return this.maxNumConditions>=2},t.prototype.createBodyTemplate=function(){return""},t.prototype.getCssIdentifier=function(){return"simple-filter"},t.prototype.updateUiVisibility=function(){var e=this.getJoinOperator();this.updateNumConditions(),this.updateConditionStatusesAndValues(this.lastUiCompletePosition,e)},t.prototype.updateNumConditions=function(){for(var e,r=-1,o=!0,i=0;i0&&this.removeConditionsAndOperators(a,l),this.createMissingConditionsAndOperators()}}this.lastUiCompletePosition=r},t.prototype.updateConditionStatusesAndValues=function(e,r){var o=this;this.eTypes.forEach(function(s,a){var l=o.isConditionDisabled(a,e);s.setDisabled(l||o.filterListOptions.length<=1),a===1&&(Pr(o.eJoinOperatorPanels[0],l),o.eJoinOperatorsAnd[0].setDisabled(l),o.eJoinOperatorsOr[0].setDisabled(l))}),this.eConditionBodies.forEach(function(s,a){$(s,o.isConditionBodyVisible(a))});var i=(r??this.getJoinOperator())==="OR";this.eJoinOperatorsAnd.forEach(function(s,a){s.setValue(!i,!0)}),this.eJoinOperatorsOr.forEach(function(s,a){s.setValue(i,!0)}),this.forEachInput(function(s,a,l,u){o.setElementDisplayed(s,a=this.getNumConditions())){this.removeComponents(this.eTypes,e,r),this.removeElements(this.eConditionBodies,e,r),this.removeValueElements(e,r);var o=Math.max(e-1,0);this.removeElements(this.eJoinOperatorPanels,o,r),this.removeComponents(this.eJoinOperatorsAnd,o,r),this.removeComponents(this.eJoinOperatorsOr,o,r)}},t.prototype.removeElements=function(e,r,o){var i=this.removeItems(e,r,o);i.forEach(function(s){return ft(s)})},t.prototype.removeComponents=function(e,r,o){var i=this,s=this.removeItems(e,r,o);s.forEach(function(a){ft(a.getGui()),i.destroyBean(a)})},t.prototype.removeItems=function(e,r,o){return o==null?e.splice(r):e.splice(r,o)},t.prototype.afterGuiAttached=function(e){if(n.prototype.afterGuiAttached.call(this,e),this.resetPlaceholder(),!(e!=null&&e.suppressFocus))if(this.isReadOnly())this.eFilterBody.focus();else{var r=this.getInputs(0)[0];if(!r)return;r instanceof kt&&r.getInputElement().focus()}},t.prototype.afterGuiDetached=function(){n.prototype.afterGuiDetached.call(this);var e=this.getModel();this.resetUiToActiveModel(e);for(var r=-1,o=-1,i=!1,s=this.getJoinOperator(),a=this.getNumConditions()-1;a>=0;a--)if(this.isConditionUiComplete(a))r===-1&&(r=a,o=a);else{var l=a>=this.numAlwaysVisibleConditions&&!this.isConditionUiComplete(a-1),u=a1?"inRangeStart":i===0?"filterOoo":"inRangeEnd",u=i===0&&a>1?r("ariaFilterFromValue","Filter from value"):i===0?r("ariaFilterValue","Filter Value"):r("ariaFilterToValue","Filter to Value");o.setInputPlaceholder(e.getPlaceholderText(l,s)),o.setInputAriaLabel(u)}})},t.prototype.setElementValue=function(e,r,o){e instanceof kt&&e.setValue(r!=null?String(r):null,!0)},t.prototype.setElementDisplayed=function(e,r){e instanceof k&&$(e.getGui(),r)},t.prototype.setElementDisabled=function(e,r){e instanceof k&&Pr(e.getGui(),r)},t.prototype.attachElementOnChange=function(e,r){e instanceof kt&&e.onValueChange(r)},t.prototype.forEachInput=function(e){var r=this;this.getConditionTypes().forEach(function(o,i){r.forEachPositionTypeInput(i,o,e)})},t.prototype.forEachPositionInput=function(e,r){var o=this.getConditionType(e);this.forEachPositionTypeInput(e,o,r)},t.prototype.forEachPositionTypeInput=function(e,r,o){for(var i=this.getNumberOfInputs(r),s=this.getInputs(e),a=0;ar+1},t.prototype.isConditionBodyVisible=function(e){var r=this.getConditionType(e),o=this.getNumberOfInputs(r);return o>0},t.prototype.isConditionUiComplete=function(e){if(e>=this.getNumConditions())return!1;var r=this.getConditionType(e);return!(r===t.EMPTY||this.getValues(e).some(function(o){return o==null}))},t.prototype.getNumConditions=function(){return this.eTypes.length},t.prototype.getUiCompleteConditions=function(){for(var e=[],r=0;r0)},t.prototype.resetInput=function(e){this.setElementValue(e,null),this.setElementDisabled(e,this.isReadOnly())},t.prototype.setConditionIntoUi=function(e,r){var o=this,i=this.mapValuesFromModel(e);this.forEachInput(function(s,a,l,u){l===r&&o.setElementValue(s,i[a]!=null?i[a]:null)})},t.prototype.setValueFromFloatingFilter=function(e){var r=this;this.forEachInput(function(o,i,s,a){r.setElementValue(o,i===0&&s===0?e:null,!0)})},t.prototype.isDefaultOperator=function(e){return e===this.defaultJoinOperator},t.prototype.addChangedListeners=function(e,r){var o=this;this.isReadOnly()||(e.onValueChange(this.listener),this.forEachPositionInput(r,function(i){o.attachElementOnChange(i,o.listener)}))},t.prototype.individualConditionPasses=function(e,r){var o=this.getCellValue(e.node),i=this.mapValuesFromModel(r),s=this.optionsFactory.getCustomOption(r.type),a=this.evaluateCustomFilter(s,i,o);return a??(o==null?this.evaluateNullValue(r.type):this.evaluateNonNullValue(i,o,r,e))},t.prototype.evaluateCustomFilter=function(e,r,o){if(e!=null){var i=e.predicate;if(i!=null&&!r.some(function(s){return s==null}))return i(r,o)}},t.prototype.isBlank=function(e){return e==null||typeof e=="string"&&e.trim().length===0},t.prototype.hasInvalidInputs=function(){return!1},t.EMPTY="empty",t.BLANK="blank",t.NOT_BLANK="notBlank",t.EQUALS="equals",t.NOT_EQUAL="notEqual",t.LESS_THAN="lessThan",t.LESS_THAN_OR_EQUAL="lessThanOrEqual",t.GREATER_THAN="greaterThan",t.GREATER_THAN_OR_EQUAL="greaterThanOrEqual",t.IN_RANGE="inRange",t.CONTAINS="contains",t.NOT_CONTAINS="notContains",t.STARTS_WITH="startsWith",t.ENDS_WITH="endsWith",t}(Zo),wd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ce=function(n){wd(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.setParams=function(e){n.prototype.setParams.call(this,e),this.scalarFilterParams=e},t.prototype.evaluateNullValue=function(e){switch(e){case t.EQUALS:case t.NOT_EQUAL:if(this.scalarFilterParams.includeBlanksInEquals)return!0;break;case t.GREATER_THAN:case t.GREATER_THAN_OR_EQUAL:if(this.scalarFilterParams.includeBlanksInGreaterThan)return!0;break;case t.LESS_THAN:case t.LESS_THAN_OR_EQUAL:if(this.scalarFilterParams.includeBlanksInLessThan)return!0;break;case t.IN_RANGE:if(this.scalarFilterParams.includeBlanksInRange)return!0;break;case t.BLANK:return!0;case t.NOT_BLANK:return!1}return!1},t.prototype.evaluateNonNullValue=function(e,r,o){var i=this.comparator(),s=e[0]!=null?i(e[0],r):0;switch(o.type){case t.EQUALS:return s===0;case t.NOT_EQUAL:return s!==0;case t.GREATER_THAN:return s>0;case t.GREATER_THAN_OR_EQUAL:return s>=0;case t.LESS_THAN:return s<0;case t.LESS_THAN_OR_EQUAL:return s<=0;case t.IN_RANGE:{var a=i(e[1],r);return this.scalarFilterParams.inRangeInclusive?s>=0&&a<=0:s>0&&a<0}case t.BLANK:return this.isBlank(r);case t.NOT_BLANK:return!this.isBlank(r);default:return console.warn('AG Grid: Unexpected type of filter "'+o.type+'", it looks like the filter was configured with incorrect Filter Options'),!0}},t}(re),Rl=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),os=function(){return os=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Ol=1e3,Tl=1/0,Pl=function(n){Rl(t,n);function t(e,r,o){var i=n.call(this,r,o)||this;return i.dateFilterParams=e,i}return t.prototype.conditionToString=function(e,r){var o=e.type,i=(r||{}).numberOfInputs,s=o==re.IN_RANGE||i===2,a=_e(e.dateFrom),l=_e(e.dateTo),u=this.dateFilterParams.inRangeFloatingFilterDateFormat;if(s){var c=a!==null?Tr(a,u):"null",p=l!==null?Tr(l,u):"null";return"".concat(c,"-").concat(p)}return a!=null?Tr(a,u):"".concat(o)},t.prototype.updateParams=function(e){n.prototype.updateParams.call(this,e),this.dateFilterParams=e.dateFilterParams},t}(rs),Dl=function(n){Rl(t,n);function t(){var e=n.call(this,"dateFilter")||this;return e.eConditionPanelsFrom=[],e.eConditionPanelsTo=[],e.dateConditionFromComps=[],e.dateConditionToComps=[],e.minValidYear=Ol,e.maxValidYear=Tl,e.minValidDate=null,e.maxValidDate=null,e}return t.prototype.afterGuiAttached=function(e){n.prototype.afterGuiAttached.call(this,e),this.dateConditionFromComps[0].afterGuiAttached(e)},t.prototype.mapValuesFromModel=function(e){var r=e||{},o=r.dateFrom,i=r.dateTo,s=r.type;return[o&&_e(o)||null,i&&_e(i)||null].slice(0,this.getNumberOfInputs(s))},t.prototype.comparator=function(){return this.dateFilterParams.comparator?this.dateFilterParams.comparator:this.defaultComparator.bind(this)},t.prototype.defaultComparator=function(e,r){var o=r;return r==null||oe?1:0},t.prototype.setParams=function(e){this.dateFilterParams=e,n.prototype.setParams.call(this,e);var r=function(o,i){if(e[o]!=null)if(isNaN(e[o]))console.warn("AG Grid: DateFilter ".concat(o," is not a number"));else return e[o]==null?i:Number(e[o]);return i};this.minValidYear=r("minValidYear",Ol),this.maxValidYear=r("maxValidYear",Tl),this.minValidYear>this.maxValidYear&&console.warn("AG Grid: DateFilter minValidYear should be <= maxValidYear"),e.minValidDate?this.minValidDate=e.minValidDate instanceof Date?e.minValidDate:_e(e.minValidDate):this.minValidDate=null,e.maxValidDate?this.maxValidDate=e.maxValidDate instanceof Date?e.maxValidDate:_e(e.maxValidDate):this.maxValidDate=null,this.minValidDate&&this.maxValidDate&&this.minValidDate>this.maxValidDate&&console.warn("AG Grid: DateFilter minValidDate should be <= maxValidDate"),this.filterModelFormatter=new Pl(this.dateFilterParams,this.localeService,this.optionsFactory)},t.prototype.createDateCompWrapper=function(e){var r=this,o=new hl(this.getContext(),this.userComponentFactory,{onDateChanged:function(){return r.onUiChanged()},filterParams:this.dateFilterParams},e);return this.addDestroyFunc(function(){return o.destroy()}),o},t.prototype.setElementValue=function(e,r){e.setDate(r)},t.prototype.setElementDisplayed=function(e,r){e.setDisplayed(r)},t.prototype.setElementDisabled=function(e,r){e.setDisabled(r)},t.prototype.getDefaultFilterOptions=function(){return t.DEFAULT_FILTER_OPTIONS},t.prototype.createValueElement=function(){var e=document.createElement("div");return e.classList.add("ag-filter-body"),this.createFromToElement(e,this.eConditionPanelsFrom,this.dateConditionFromComps,"from"),this.createFromToElement(e,this.eConditionPanelsTo,this.dateConditionToComps,"to"),e},t.prototype.createFromToElement=function(e,r,o,i){var s=document.createElement("div");s.classList.add("ag-filter-".concat(i)),s.classList.add("ag-filter-date-".concat(i)),r.push(s),e.appendChild(s),o.push(this.createDateCompWrapper(s))},t.prototype.removeValueElements=function(e,r){this.removeDateComps(this.dateConditionFromComps,e,r),this.removeDateComps(this.dateConditionToComps,e,r),this.removeItems(this.eConditionPanelsFrom,e,r),this.removeItems(this.eConditionPanelsTo,e,r)},t.prototype.removeDateComps=function(e,r,o){var i=this.removeItems(e,r,o);i.forEach(function(s){return s.destroy()})},t.prototype.isValidDateValue=function(e){if(e===null)return!1;if(this.minValidDate){if(ethis.maxValidDate)return!1}else if(e.getUTCFullYear()>this.maxValidYear)return!1;return!0},t.prototype.isConditionUiComplete=function(e){var r=this;if(!n.prototype.isConditionUiComplete.call(this,e))return!1;var o=!0;return this.forEachInput(function(i,s,a,l){a!==e||!o||s>=l||(o=o&&r.isValidDateValue(i.getDate()))}),o},t.prototype.areSimpleModelsEqual=function(e,r){return e.dateFrom===r.dateFrom&&e.dateTo===r.dateTo&&e.type===r.type},t.prototype.getFilterType=function(){return"date"},t.prototype.createCondition=function(e){var r=this.getConditionType(e),o={},i=this.getValues(e);return i.length>0&&(o.dateFrom=Xe(i[0])),i.length>1&&(o.dateTo=Xe(i[1])),os({dateFrom:null,dateTo:null,filterType:this.getFilterType(),type:r},o)},t.prototype.resetPlaceholder=function(){var e=this.localeService.getLocaleTextFunc(),r=this.translate("dateFormatOoo"),o=e("ariaFilterValue","Filter Value");this.forEachInput(function(i){i.setInputPlaceholder(r),i.setInputAriaLabel(o)})},t.prototype.getInputs=function(e){return e>=this.dateConditionFromComps.length?[null,null]:[this.dateConditionFromComps[e],this.dateConditionToComps[e]]},t.prototype.getValues=function(e){var r=[];return this.forEachPositionInput(e,function(o,i,s,a){i=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Od=function(n){Rd(t,n);function t(){return n.call(this,` + `)||this}return t.prototype.getDefaultFilterOptions=function(){return Dl.DEFAULT_FILTER_OPTIONS},t.prototype.init=function(e){n.prototype.init.call(this,e),this.params=e,this.filterParams=e.filterParams,this.createDateComponent(),this.filterModelFormatter=new Pl(this.filterParams,this.localeService,this.optionsFactory);var r=this.localeService.getLocaleTextFunc();this.eReadOnlyText.setDisabled(!0).setInputAriaLabel(r("ariaDateFilterInput","Date Filter Input"))},t.prototype.onParamsUpdated=function(e){this.refresh(e)},t.prototype.refresh=function(e){n.prototype.refresh.call(this,e),this.params=e,this.filterParams=e.filterParams,this.updateDateComponent(),this.filterModelFormatter.updateParams({optionsFactory:this.optionsFactory,dateFilterParams:this.filterParams}),this.updateCompOnModelChange(e.currentParentModel())},t.prototype.updateCompOnModelChange=function(e){var r=!this.isReadOnly()&&this.canWeEditAfterModelFromParentFilter(e);if(this.setEditable(r),r){if(e){var o=e;this.dateComp.setDate(_e(o.dateFrom))}else this.dateComp.setDate(null);this.eReadOnlyText.setValue("")}else this.eReadOnlyText.setValue(this.filterModelFormatter.getModelAsString(e)),this.dateComp.setDate(null)},t.prototype.setEditable=function(e){$(this.eDateWrapper,e),$(this.eReadOnlyText.getGui(),!e)},t.prototype.onParentModelChanged=function(e,r){this.isEventFromFloatingFilter(r)||this.isEventFromDataChange(r)||(n.prototype.setLastTypeFromModel.call(this,e),this.updateCompOnModelChange(e))},t.prototype.onDateChanged=function(){var e=this,r=this.dateComp.getDate(),o=Xe(r);this.params.parentFilterInstance(function(i){if(i){var s=_e(o);i.onFloatingFilterChanged(e.getLastType()||null,s)}})},t.prototype.getDateComponentParams=function(){var e=Zo.getDebounceMs(this.params.filterParams,this.getDefaultDebounceMs());return{onDateChanged:He(this.onDateChanged.bind(this),e),filterParams:this.params.column.getColDef().filterParams}},t.prototype.createDateComponent=function(){var e=this;this.dateComp=new hl(this.getContext(),this.userComponentFactory,this.getDateComponentParams(),this.eDateWrapper),this.addDestroyFunc(function(){return e.dateComp.destroy()})},t.prototype.updateDateComponent=function(){var e=this.gridOptionsService.addGridCommonParams(this.getDateComponentParams());this.dateComp.updateParams(e)},t.prototype.getFilterModelFormatter=function(){return this.filterModelFormatter},is([v("userComponentFactory")],t.prototype,"userComponentFactory",void 0),is([L("eReadOnlyText")],t.prototype,"eReadOnlyText",void 0),is([L("eDateWrapper")],t.prototype,"eDateWrapper",void 0),t}(Al),Td=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Pd=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Dd=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Ad=function(n){Td(t,n);function t(){return n.call(this,` +
+ +
`)||this}return t.prototype.destroy=function(){n.prototype.destroy.call(this)},t.prototype.init=function(e){var r=this;this.params=e,this.setParams(e);var o=this.gridOptionsService.getDocument(),i=this.eDateInput.getInputElement();this.addManagedListener(i,"mousedown",function(){r.eDateInput.isDisabled()||r.usingSafariDatePicker||i.focus()}),this.addManagedListener(i,"input",function(s){s.target===o.activeElement&&(r.eDateInput.isDisabled()||r.params.onDateChanged())})},t.prototype.setParams=function(e){var r=this.eDateInput.getInputElement(),o=this.shouldUseBrowserDatePicker(e);this.usingSafariDatePicker=o&&ht(),r.type=o?"date":"text";var i=e.filterParams||{},s=i.minValidYear,a=i.maxValidYear,l=i.minValidDate,u=i.maxValidDate;if(l&&s&&V("DateFilter should not have both minValidDate and minValidYear parameters set at the same time! minValidYear will be ignored."),u&&a&&V("DateFilter should not have both maxValidDate and maxValidYear parameters set at the same time! maxValidYear will be ignored."),l&&u){var c=Dd([l,u].map(function(h){return h instanceof Date?h:_e(h)}),2),p=c[0],d=c[1];p&&d&&p.getTime()>d.getTime()&&V("DateFilter parameter minValidDate should always be lower than or equal to parameter maxValidDate.")}l?l instanceof Date?r.min=Tr(l):r.min=l:s&&(r.min="".concat(s,"-01-01")),u?u instanceof Date?r.max=Tr(u):r.max=u:a&&(r.max="".concat(a,"-12-31"))},t.prototype.onParamsUpdated=function(e){this.refresh(e)},t.prototype.refresh=function(e){this.params=e,this.setParams(e)},t.prototype.getDate=function(){return _e(this.eDateInput.getValue())},t.prototype.setDate=function(e){this.eDateInput.setValue(Xe(e,!1))},t.prototype.setInputPlaceholder=function(e){this.eDateInput.setInputPlaceholder(e)},t.prototype.setDisabled=function(e){this.eDateInput.setDisabled(e)},t.prototype.afterGuiAttached=function(e){(!e||!e.suppressFocus)&&this.eDateInput.getInputElement().focus()},t.prototype.shouldUseBrowserDatePicker=function(e){return e.filterParams&&e.filterParams.browserDatePicker!=null?e.filterParams.browserDatePicker:$o()||An()||ht()&&Dn()>=14.1},Pd([L("eDateInput")],t.prototype,"eDateInput",void 0),t}(k),bd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),lr=function(n){bd(t,n);function t(e,r,o){return r===void 0&&(r="ag-text-field"),o===void 0&&(o="text"),n.call(this,e,r,o)||this}return t.prototype.postConstruct=function(){n.prototype.postConstruct.call(this),this.config.allowedCharPattern&&this.preventDisallowedCharacters()},t.prototype.setValue=function(e,r){return this.eInput.value!==e&&(this.eInput.value=P(e)?e:""),n.prototype.setValue.call(this,e,r)},t.prototype.setStartValue=function(e){this.setValue(e,!0)},t.prototype.preventDisallowedCharacters=function(){var e=new RegExp("[".concat(this.config.allowedCharPattern,"]")),r=function(o){Xo(o)&&o.key&&!e.test(o.key)&&o.preventDefault()};this.addManagedListener(this.eInput,"keydown",r),this.addManagedListener(this.eInput,"paste",function(o){var i,s=(i=o.clipboardData)===null||i===void 0?void 0:i.getData("text");s&&s.split("").some(function(a){return!e.test(a)})&&o.preventDefault()})},t}(kt),Fd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ns=function(n){Fd(t,n);function t(e){return n.call(this,e,"ag-number-field","number")||this}return t.prototype.postConstruct=function(){var e=this;n.prototype.postConstruct.call(this),this.addManagedListener(this.eInput,"blur",function(){var r=parseFloat(e.eInput.value),o=isNaN(r)?"":e.normalizeValue(r.toString());e.value!==o&&e.setValue(o)}),this.addManagedListener(this.eInput,"wheel",this.onWheel.bind(this)),this.eInput.step="any"},t.prototype.onWheel=function(e){document.activeElement===this.eInput&&e.preventDefault()},t.prototype.normalizeValue=function(e){if(e==="")return"";this.precision!=null&&(e=this.adjustPrecision(e));var r=parseFloat(e);return this.min!=null&&rthis.max&&(e=this.max.toString()),e},t.prototype.adjustPrecision=function(e,r){if(this.precision==null)return e;if(r){var o=parseFloat(e).toFixed(this.precision);return parseFloat(o).toString()}var i=String(e).split(".");if(i.length>1){if(i[1].length<=this.precision)return e;if(this.precision>0)return"".concat(i[0],".").concat(i[1].slice(0,this.precision))}return i[0]},t.prototype.setMin=function(e){return this.min===e?this:(this.min=e,vt(this.eInput,"min",e),this)},t.prototype.setMax=function(e){return this.max===e?this:(this.max=e,vt(this.eInput,"max",e),this)},t.prototype.setPrecision=function(e){return this.precision=e,this},t.prototype.setStep=function(e){return this.step===e?this:(this.step=e,vt(this.eInput,"step",e),this)},t.prototype.setValue=function(e,r){var o=this;return this.setValueOrInputValue(function(i){return n.prototype.setValue.call(o,i,r)},function(){return o},e)},t.prototype.setStartValue=function(e){var r=this;return this.setValueOrInputValue(function(o){return n.prototype.setValue.call(r,o,!0)},function(o){r.eInput.value=o},e)},t.prototype.setValueOrInputValue=function(e,r,o){if(P(o)){var i=this.isScientificNotation(o);if(i&&this.eInput.validity.valid)return e(o);if(!i){o=this.adjustPrecision(o);var s=this.normalizeValue(o);i=o!=s}if(i)return r(o)}return e(o)},t.prototype.getValue=function(){if(this.eInput.validity.valid){var e=this.eInput.value;return this.isScientificNotation(e)?this.adjustPrecision(e,!0):n.prototype.getValue.call(this)}},t.prototype.isScientificNotation=function(e){return typeof e=="string"&&e.includes("e")},t}(lr),bl=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Fl=function(n){bl(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.conditionToString=function(e,r){var o=(r||{}).numberOfInputs,i=e.type==re.IN_RANGE||o===2;return i?"".concat(this.formatValue(e.filter),"-").concat(this.formatValue(e.filterTo)):e.filter!=null?this.formatValue(e.filter):"".concat(e.type)},t}(rs);function ss(n){var t=(n??{}).allowedCharPattern;return t??null}var Ll=function(n){bl(t,n);function t(){var e=n.call(this,"numberFilter")||this;return e.eValuesFrom=[],e.eValuesTo=[],e}return t.prototype.refresh=function(e){return this.numberFilterParams.allowedCharPattern!==e.allowedCharPattern?!1:n.prototype.refresh.call(this,e)},t.prototype.mapValuesFromModel=function(e){var r=e||{},o=r.filter,i=r.filterTo,s=r.type;return[this.processValue(o),this.processValue(i)].slice(0,this.getNumberOfInputs(s))},t.prototype.getDefaultDebounceMs=function(){return 500},t.prototype.comparator=function(){return function(e,r){return e===r?0:e0&&(o.filter=i[0]),i.length>1&&(o.filterTo=i[1]),o},t.prototype.getInputs=function(e){return e>=this.eValuesFrom.length?[null,null]:[this.eValuesFrom[e],this.eValuesTo[e]]},t.prototype.getModelAsString=function(e){var r;return(r=this.filterModelFormatter.getModelAsString(e))!==null&&r!==void 0?r:""},t.prototype.hasInvalidInputs=function(){var e=!1;return this.forEachInput(function(r){if(!r.getInputElement().validity.valid){e=!0;return}}),e},t.DEFAULT_FILTER_OPTIONS=[ce.EQUALS,ce.NOT_EQUAL,ce.GREATER_THAN,ce.GREATER_THAN_OR_EQUAL,ce.LESS_THAN,ce.LESS_THAN_OR_EQUAL,ce.IN_RANGE,ce.BLANK,ce.NOT_BLANK],t}(ce),Ml=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ri=function(){return ri=Object.assign||function(n){for(var t,e=1,r=arguments.length;e0&&(o.filter=i[0]),i.length>1&&(o.filterTo=i[1]),o},t.prototype.getFilterType=function(){return"text"},t.prototype.areSimpleModelsEqual=function(e,r){return e.filter===r.filter&&e.filterTo===r.filterTo&&e.type===r.type},t.prototype.getInputs=function(e){return e>=this.eValuesFrom.length?[null,null]:[this.eValuesFrom[e],this.eValuesTo[e]]},t.prototype.getValues=function(e){return this.getValuesWithSideEffects(e,!1)},t.prototype.getValuesWithSideEffects=function(e,r){var o=this,i=[];return this.forEachPositionInput(e,function(s,a,l,u){var c;if(a=0:!1},t.prototype.evaluateNonNullValue=function(e,r,o,i){var s=this,a=e.map(function(C){return s.formatter(C)})||[],l=this.formatter(r),u=this.textFilterParams,c=u.api,p=u.colDef,d=u.column,h=u.columnApi,f=u.context,y=u.textFormatter;if(o.type===re.BLANK)return this.isBlank(r);if(o.type===re.NOT_BLANK)return!this.isBlank(r);var m={api:c,colDef:p,column:d,columnApi:h,context:f,node:i.node,data:i.data,filterOption:o.type,value:l,textFormatter:y};return a.some(function(C){return s.matcher(ri(ri({},m),{filterText:C}))})},t.prototype.getModelAsString=function(e){var r;return(r=this.filterModelFormatter.getModelAsString(e))!==null&&r!==void 0?r:""},t.DEFAULT_FILTER_OPTIONS=[re.CONTAINS,re.NOT_CONTAINS,re.EQUALS,re.NOT_EQUAL,re.STARTS_WITH,re.ENDS_WITH,re.BLANK,re.NOT_BLANK],t.DEFAULT_FORMATTER=function(e){return e},t.DEFAULT_LOWERCASE_FORMATTER=function(e){return e==null?null:e.toString().toLowerCase()},t.DEFAULT_MATCHER=function(e){var r=e.filterOption,o=e.value,i=e.filterText;if(i==null)return!1;switch(r){case t.CONTAINS:return o.indexOf(i)>=0;case t.NOT_CONTAINS:return o.indexOf(i)<0;case t.EQUALS:return o===i;case t.NOT_EQUAL:return o!=i;case t.STARTS_WITH:return o.indexOf(i)===0;case t.ENDS_WITH:var s=o.lastIndexOf(i);return s>=0&&s===o.length-i.length;default:return!1}},t}(re),xl=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ls=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Nl=function(n){xl(t,n);function t(e){var r=n.call(this)||this;return r.params=e,r.valueChangedListener=function(){},r}return t.prototype.setupGui=function(e){var r=this,o;this.eFloatingFilterTextInput=this.createManagedBean(new lr((o=this.params)===null||o===void 0?void 0:o.config));var i=this.eFloatingFilterTextInput.getGui();e.appendChild(i),this.addManagedListener(i,"input",function(s){return r.valueChangedListener(s)}),this.addManagedListener(i,"keydown",function(s){return r.valueChangedListener(s)})},t.prototype.setEditable=function(e){this.eFloatingFilterTextInput.setDisabled(!e)},t.prototype.setAutoComplete=function(e){this.eFloatingFilterTextInput.setAutoComplete(e)},t.prototype.getValue=function(){return this.eFloatingFilterTextInput.getValue()},t.prototype.setValue=function(e,r){this.eFloatingFilterTextInput.setValue(e,r)},t.prototype.setValueChangedListener=function(e){this.valueChangedListener=e},t.prototype.setParams=function(e){this.setAriaLabel(e.ariaLabel),e.autoComplete!==void 0&&this.setAutoComplete(e.autoComplete)},t.prototype.setAriaLabel=function(e){this.eFloatingFilterTextInput.setInputAriaLabel(e)},t}(D),Gl=function(n){xl(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.postConstruct=function(){this.setTemplate(` + + `)},t.prototype.getDefaultDebounceMs=function(){return 500},t.prototype.onParentModelChanged=function(e,r){this.isEventFromFloatingFilter(r)||this.isEventFromDataChange(r)||(this.setLastTypeFromModel(e),this.setEditable(this.canWeEditAfterModelFromParentFilter(e)),this.floatingFilterInputService.setValue(this.getFilterModelFormatter().getModelAsString(e)))},t.prototype.init=function(e){this.setupFloatingFilterInputService(e),n.prototype.init.call(this,e),this.setTextInputParams(e)},t.prototype.setupFloatingFilterInputService=function(e){this.floatingFilterInputService=this.createFloatingFilterInputService(e),this.floatingFilterInputService.setupGui(this.eFloatingFilterInputContainer)},t.prototype.setTextInputParams=function(e){var r;this.params=e;var o=(r=e.browserAutoComplete)!==null&&r!==void 0?r:!1;if(this.floatingFilterInputService.setParams({ariaLabel:this.getAriaLabel(e),autoComplete:o}),this.applyActive=Zo.isUseApplyButton(this.params.filterParams),!this.isReadOnly()){var i=Zo.getDebounceMs(this.params.filterParams,this.getDefaultDebounceMs()),s=He(this.syncUpWithParentFilter.bind(this),i);this.floatingFilterInputService.setValueChangedListener(s)}},t.prototype.onParamsUpdated=function(e){this.refresh(e)},t.prototype.refresh=function(e){n.prototype.refresh.call(this,e),this.setTextInputParams(e)},t.prototype.recreateFloatingFilterInputService=function(e){var r=this.floatingFilterInputService.getValue();de(this.eFloatingFilterInputContainer),this.destroyBean(this.floatingFilterInputService),this.setupFloatingFilterInputService(e),this.floatingFilterInputService.setValue(r,!0)},t.prototype.getAriaLabel=function(e){var r=this.columnModel.getDisplayNameForColumn(e.column,"header",!0),o=this.localeService.getLocaleTextFunc();return"".concat(r," ").concat(o("ariaFilterInput","Filter Input"))},t.prototype.syncUpWithParentFilter=function(e){var r=this,o=e.key===_.ENTER;if(!(this.applyActive&&!o)){var i=this.floatingFilterInputService.getValue();this.params.filterParams.trimInput&&(i=as.trimInput(i),this.floatingFilterInputService.setValue(i,!0)),this.params.parentFilterInstance(function(s){s&&s.onFloatingFilterChanged(r.getLastType()||null,i||null)})}},t.prototype.setEditable=function(e){this.floatingFilterInputService.setEditable(e)},ls([v("columnModel")],t.prototype,"columnModel",void 0),ls([L("eFloatingFilterInputContainer")],t.prototype,"eFloatingFilterInputContainer",void 0),ls([F],t.prototype,"postConstruct",null),t}(Al),Vl=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Ld=function(n){Vl(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.valueChangedListener=function(){},e.numberInputActive=!0,e}return t.prototype.setupGui=function(e){var r=this;this.eFloatingFilterNumberInput=this.createManagedBean(new ns),this.eFloatingFilterTextInput=this.createManagedBean(new lr),this.eFloatingFilterTextInput.setDisabled(!0);var o=this.eFloatingFilterNumberInput.getGui(),i=this.eFloatingFilterTextInput.getGui();e.appendChild(o),e.appendChild(i),this.setupListeners(o,function(s){return r.valueChangedListener(s)}),this.setupListeners(i,function(s){return r.valueChangedListener(s)})},t.prototype.setEditable=function(e){this.numberInputActive=e,this.eFloatingFilterNumberInput.setDisplayed(this.numberInputActive),this.eFloatingFilterTextInput.setDisplayed(!this.numberInputActive)},t.prototype.setAutoComplete=function(e){this.eFloatingFilterNumberInput.setAutoComplete(e),this.eFloatingFilterTextInput.setAutoComplete(e)},t.prototype.getValue=function(){return this.getActiveInputElement().getValue()},t.prototype.setValue=function(e,r){this.getActiveInputElement().setValue(e,r)},t.prototype.getActiveInputElement=function(){return this.numberInputActive?this.eFloatingFilterNumberInput:this.eFloatingFilterTextInput},t.prototype.setValueChangedListener=function(e){this.valueChangedListener=e},t.prototype.setupListeners=function(e,r){this.addManagedListener(e,"input",r),this.addManagedListener(e,"keydown",r)},t.prototype.setParams=function(e){this.setAriaLabel(e.ariaLabel),e.autoComplete!==void 0&&this.setAutoComplete(e.autoComplete)},t.prototype.setAriaLabel=function(e){this.eFloatingFilterNumberInput.setInputAriaLabel(e),this.eFloatingFilterTextInput.setInputAriaLabel(e)},t}(D),Md=function(n){Vl(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.init=function(e){var r;n.prototype.init.call(this,e),this.filterModelFormatter=new Fl(this.localeService,this.optionsFactory,(r=e.filterParams)===null||r===void 0?void 0:r.numberFormatter)},t.prototype.onParamsUpdated=function(e){this.refresh(e)},t.prototype.refresh=function(e){var r=ss(e.filterParams);r!==this.allowedCharPattern&&this.recreateFloatingFilterInputService(e),n.prototype.refresh.call(this,e),this.filterModelFormatter.updateParams({optionsFactory:this.optionsFactory})},t.prototype.getDefaultFilterOptions=function(){return Ll.DEFAULT_FILTER_OPTIONS},t.prototype.getFilterModelFormatter=function(){return this.filterModelFormatter},t.prototype.createFloatingFilterInputService=function(e){return this.allowedCharPattern=ss(e.filterParams),this.allowedCharPattern?this.createManagedBean(new Nl({config:{allowedCharPattern:this.allowedCharPattern}})):this.createManagedBean(new Ld)},t}(Gl),Id=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),xd=function(n){Id(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.init=function(e){n.prototype.init.call(this,e),this.filterModelFormatter=new Il(this.localeService,this.optionsFactory)},t.prototype.onParamsUpdated=function(e){this.refresh(e)},t.prototype.refresh=function(e){n.prototype.refresh.call(this,e),this.filterModelFormatter.updateParams({optionsFactory:this.optionsFactory})},t.prototype.getDefaultFilterOptions=function(){return as.DEFAULT_FILTER_OPTIONS},t.prototype.getFilterModelFormatter=function(){return this.filterModelFormatter},t.prototype.createFloatingFilterInputService=function(){return this.createManagedBean(new Nl)},t}(Gl),me=function(){function n(t,e){e===void 0&&(e=!1);var r=this;this.destroyFuncs=[],this.touching=!1,this.eventService=new xt,this.eElement=t,this.preventMouseClick=e;var o=this.onTouchStart.bind(this),i=this.onTouchMove.bind(this),s=this.onTouchEnd.bind(this);this.eElement.addEventListener("touchstart",o,{passive:!0}),this.eElement.addEventListener("touchmove",i,{passive:!0}),this.eElement.addEventListener("touchend",s,{passive:!1}),this.destroyFuncs.push(function(){r.eElement.removeEventListener("touchstart",o,{passive:!0}),r.eElement.removeEventListener("touchmove",i,{passive:!0}),r.eElement.removeEventListener("touchend",s,{passive:!1})})}return n.prototype.getActiveTouch=function(t){for(var e=0;e0){var e=t-this.lastTapTime;if(e>n.DOUBLE_TAP_MILLIS){var r={type:n.EVENT_DOUBLE_TAP,touchStart:this.touchStart};this.eventService.dispatchEvent(r),this.lastTapTime=null}else this.lastTapTime=t}else this.lastTapTime=t},n.prototype.destroy=function(){this.destroyFuncs.forEach(function(t){return t()})},n.EVENT_TAP="tap",n.EVENT_DOUBLE_TAP="doubleTap",n.EVENT_LONG_TAP="longTap",n.DOUBLE_TAP_MILLIS=500,n}(),Nd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ur=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},us=function(n){Nd(t,n);function t(e){var r=n.call(this)||this;return e||r.setTemplate(t.TEMPLATE),r}return t.prototype.attachCustomElements=function(e,r,o,i,s){this.eSortOrder=e,this.eSortAsc=r,this.eSortDesc=o,this.eSortMixed=i,this.eSortNone=s},t.prototype.setupSort=function(e,r){var o=this;r===void 0&&(r=!1),this.column=e,this.suppressOrder=r,this.setupMultiSortIndicator(),this.column.isSortable()&&(this.addInIcon("sortAscending",this.eSortAsc,e),this.addInIcon("sortDescending",this.eSortDesc,e),this.addInIcon("sortUnSort",this.eSortNone,e),this.addManagedPropertyListener("unSortIcon",function(){return o.updateIcons()}),this.addManagedListener(this.eventService,g.EVENT_NEW_COLUMNS_LOADED,function(){return o.updateIcons()}),this.addManagedListener(this.eventService,g.EVENT_SORT_CHANGED,function(){return o.onSortChanged()}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_ROW_GROUP_CHANGED,function(){return o.onSortChanged()}),this.onSortChanged())},t.prototype.addInIcon=function(e,r,o){if(r!=null){var i=ne(e,this.gridOptionsService,o);i&&r.appendChild(i)}},t.prototype.onSortChanged=function(){this.updateIcons(),this.suppressOrder||this.updateSortOrder()},t.prototype.updateIcons=function(){var e=this.sortController.getDisplaySortForColumn(this.column);if(this.eSortAsc){var r=e==="asc";$(this.eSortAsc,r,{skipAriaHidden:!0})}if(this.eSortDesc){var o=e==="desc";$(this.eSortDesc,o,{skipAriaHidden:!0})}if(this.eSortNone){var i=!this.column.getColDef().unSortIcon&&!this.gridOptionsService.get("unSortIcon"),s=e==null;$(this.eSortNone,!i&&s,{skipAriaHidden:!0})}},t.prototype.setupMultiSortIndicator=function(){var e=this;this.addInIcon("sortUnSort",this.eSortMixed,this.column);var r=this.column.getColDef().showRowGroup,o=this.gridOptionsService.isColumnsSortingCoupledToGroup();o&&r&&(this.addManagedListener(this.eventService,g.EVENT_SORT_CHANGED,function(){return e.updateMultiSortIndicator()}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_ROW_GROUP_CHANGED,function(){return e.updateMultiSortIndicator()}),this.updateMultiSortIndicator())},t.prototype.updateMultiSortIndicator=function(){if(this.eSortMixed){var e=this.sortController.getDisplaySortForColumn(this.column)==="mixed";$(this.eSortMixed,e,{skipAriaHidden:!0})}},t.prototype.updateSortOrder=function(){var e=this,r;if(this.eSortOrder){var o=this.sortController.getColumnsWithSortingOrdered(),i=(r=this.sortController.getDisplaySortIndexForColumn(this.column))!==null&&r!==void 0?r:-1,s=o.some(function(l){var u;return(u=e.sortController.getDisplaySortIndexForColumn(l))!==null&&u!==void 0?u:-1>=1}),a=i>=0&&s;$(this.eSortOrder,a,{skipAriaHidden:!0}),i>=0?this.eSortOrder.textContent=(i+1).toString():de(this.eSortOrder)}},t.TEMPLATE=` + + + + + + `,ur([L("eSortOrder")],t.prototype,"eSortOrder",void 0),ur([L("eSortAsc")],t.prototype,"eSortAsc",void 0),ur([L("eSortDesc")],t.prototype,"eSortDesc",void 0),ur([L("eSortMixed")],t.prototype,"eSortMixed",void 0),ur([L("eSortNone")],t.prototype,"eSortNone",void 0),ur([v("columnModel")],t.prototype,"columnModel",void 0),ur([v("sortController")],t.prototype,"sortController",void 0),t}(k),Gd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Oe=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},cs=function(n){Gd(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.lastMovingChanged=0,e}return t.prototype.destroy=function(){n.prototype.destroy.call(this)},t.prototype.refresh=function(e){return this.params=e,this.workOutTemplate()!=this.currentTemplate||this.workOutShowMenu()!=this.currentShowMenu||this.workOutSort()!=this.currentSort||this.shouldSuppressMenuHide()!=this.currentSuppressMenuHide?!1:(this.setDisplayName(e),!0)},t.prototype.workOutTemplate=function(){var e,r=(e=this.params.template)!==null&&e!==void 0?e:t.TEMPLATE;return r=r&&r.trim?r.trim():r,r},t.prototype.init=function(e){this.params=e,this.currentTemplate=this.workOutTemplate(),this.setTemplate(this.currentTemplate),this.setupTap(),this.setMenu(),this.setupSort(),this.setupFilterIcon(),this.setupFilterButton(),this.setDisplayName(e)},t.prototype.setDisplayName=function(e){if(this.currentDisplayName!=e.displayName){this.currentDisplayName=e.displayName;var r=ae(this.currentDisplayName,!0);this.eText&&(this.eText.textContent=r)}},t.prototype.addInIcon=function(e,r,o){if(r!=null){var i=ne(e,this.gridOptionsService,o);i&&r.appendChild(i)}},t.prototype.setupTap=function(){var e=this,r=this.gridOptionsService;if(!r.get("suppressTouch")){var o=new me(this.getGui(),!0),i=this.shouldSuppressMenuHide(),s=i&&P(this.eMenu),a=s?new me(this.eMenu,!0):o;if(this.params.enableMenu){var l=s?"EVENT_TAP":"EVENT_LONG_TAP",u=function(d){return e.params.showColumnMenuAfterMouseClick(d.touchStart)};this.addManagedListener(a,me[l],u)}if(this.params.enableSorting){var c=function(d){var h,f,y=d.touchStart.target;i&&(!((h=e.eMenu)===null||h===void 0)&&h.contains(y)||!((f=e.eFilterButton)===null||f===void 0)&&f.contains(y))||e.sortController.progressSort(e.params.column,!1,"uiColumnSorted")};this.addManagedListener(o,me.EVENT_TAP,c)}if(this.params.enableFilterButton){var p=new me(this.eFilterButton,!0);this.addManagedListener(p,"tap",function(){return e.params.showFilter(e.eFilterButton)}),this.addDestroyFunc(function(){return p.destroy()})}this.addDestroyFunc(function(){return o.destroy()}),s&&this.addDestroyFunc(function(){return a.destroy()})}},t.prototype.workOutShowMenu=function(){return this.params.enableMenu&&this.menuService.isHeaderMenuButtonEnabled()},t.prototype.shouldSuppressMenuHide=function(){return this.menuService.isHeaderMenuButtonAlwaysShowEnabled()},t.prototype.setMenu=function(){var e=this;if(this.eMenu){if(this.currentShowMenu=this.workOutShowMenu(),!this.currentShowMenu){ft(this.eMenu),this.eMenu=void 0;return}var r=this.menuService.isLegacyMenuEnabled();this.addInIcon(r?"menu":"menuAlt",this.eMenu,this.params.column),this.eMenu.classList.toggle("ag-header-menu-icon",!r),this.currentSuppressMenuHide=this.shouldSuppressMenuHide(),this.addManagedListener(this.eMenu,"click",function(){return e.params.showColumnMenu(e.eMenu)}),this.eMenu.classList.toggle("ag-header-menu-always-show",this.currentSuppressMenuHide)}},t.prototype.onMenuKeyboardShortcut=function(e){var r,o,i,s,a=this.params.column,l=this.menuService.isLegacyMenuEnabled();if(e&&!l){if(this.menuService.isFilterMenuInHeaderEnabled(a))return this.params.showFilter((o=(r=this.eFilterButton)!==null&&r!==void 0?r:this.eMenu)!==null&&o!==void 0?o:this.getGui()),!0}else if(this.params.enableMenu)return this.params.showColumnMenu((s=(i=this.eMenu)!==null&&i!==void 0?i:this.eFilterButton)!==null&&s!==void 0?s:this.getGui()),!0;return!1},t.prototype.workOutSort=function(){return this.params.enableSorting},t.prototype.setupSort=function(){var e=this;if(this.currentSort=this.params.enableSorting,this.eSortIndicator||(this.eSortIndicator=this.context.createBean(new us(!0)),this.eSortIndicator.attachCustomElements(this.eSortOrder,this.eSortAsc,this.eSortDesc,this.eSortMixed,this.eSortNone)),this.eSortIndicator.setupSort(this.params.column),!!this.currentSort){this.addManagedListener(this.params.column,J.EVENT_MOVING_CHANGED,function(){e.lastMovingChanged=new Date().getTime()}),this.eLabel&&this.addManagedListener(this.eLabel,"click",function(o){var i=e.params.column.isMoving(),s=new Date().getTime(),a=s-e.lastMovingChanged<50,l=i||a;if(!l){var u=e.gridOptionsService.get("multiSortKey")==="ctrl",c=u?o.ctrlKey||o.metaKey:o.shiftKey;e.params.progressSort(c)}});var r=function(){if(e.addOrRemoveCssClass("ag-header-cell-sorted-asc",e.params.column.isSortAscending()),e.addOrRemoveCssClass("ag-header-cell-sorted-desc",e.params.column.isSortDescending()),e.addOrRemoveCssClass("ag-header-cell-sorted-none",e.params.column.isSortNone()),e.params.column.getColDef().showRowGroup){var o=e.columnModel.getSourceColumnsForGroupColumn(e.params.column),i=o==null?void 0:o.every(function(a){return e.params.column.getSort()==a.getSort()}),s=!i;e.addOrRemoveCssClass("ag-header-cell-sorted-mixed",s)}};this.addManagedListener(this.eventService,g.EVENT_SORT_CHANGED,r),this.addManagedListener(this.eventService,g.EVENT_COLUMN_ROW_GROUP_CHANGED,r)}},t.prototype.setupFilterIcon=function(){this.eFilter&&this.configureFilter(this.params.enableFilterIcon,this.eFilter,this.onFilterChangedIcon.bind(this))},t.prototype.setupFilterButton=function(){var e=this;if(this.eFilterButton){var r=this.configureFilter(this.params.enableFilterButton,this.eFilterButton,this.onFilterChangedButton.bind(this));r?this.addManagedListener(this.eFilterButton,"click",function(){return e.params.showFilter(e.eFilterButton)}):this.eFilterButton=void 0}},t.prototype.configureFilter=function(e,r,o){if(!e)return ft(r),!1;var i=this.params.column;return this.addInIcon("filter",r,i),this.addManagedListener(i,J.EVENT_FILTER_CHANGED,o),o(),!0},t.prototype.onFilterChangedIcon=function(){var e=this.params.column.isFilterActive();$(this.eFilter,e,{skipAriaHidden:!0})},t.prototype.onFilterChangedButton=function(){var e=this.params.column.isFilterActive();this.eFilterButton.classList.toggle("ag-filter-active",e)},t.prototype.getAnchorElementForMenu=function(e){var r,o,i,s;return e?(o=(r=this.eFilterButton)!==null&&r!==void 0?r:this.eMenu)!==null&&o!==void 0?o:this.getGui():(s=(i=this.eMenu)!==null&&i!==void 0?i:this.eFilterButton)!==null&&s!==void 0?s:this.getGui()},t.TEMPLATE=``,Oe([v("sortController")],t.prototype,"sortController",void 0),Oe([v("menuService")],t.prototype,"menuService",void 0),Oe([v("columnModel")],t.prototype,"columnModel",void 0),Oe([L("eFilter")],t.prototype,"eFilter",void 0),Oe([L("eFilterButton")],t.prototype,"eFilterButton",void 0),Oe([L("eSortIndicator")],t.prototype,"eSortIndicator",void 0),Oe([L("eMenu")],t.prototype,"eMenu",void 0),Oe([L("eLabel")],t.prototype,"eLabel",void 0),Oe([L("eText")],t.prototype,"eText",void 0),Oe([L("eSortOrder")],t.prototype,"eSortOrder",void 0),Oe([L("eSortAsc")],t.prototype,"eSortAsc",void 0),Oe([L("eSortDesc")],t.prototype,"eSortDesc",void 0),Oe([L("eSortMixed")],t.prototype,"eSortMixed",void 0),Oe([L("eSortNone")],t.prototype,"eSortNone",void 0),t}(k),Vd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ps=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Hd=function(n){Vd(t,n);function t(){return n.call(this,t.TEMPLATE)||this}return t.prototype.destroy=function(){n.prototype.destroy.call(this)},t.prototype.init=function(e){this.params=e,this.checkWarnings(),this.setupLabel(),this.addGroupExpandIcon(),this.setupExpandIcons()},t.prototype.checkWarnings=function(){var e=this.params;e.template&&V("A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)")},t.prototype.setupExpandIcons=function(){var e=this;this.addInIcon("columnGroupOpened","agOpened"),this.addInIcon("columnGroupClosed","agClosed");var r=function(s){if(!nt(s)){var a=!e.params.columnGroup.isExpanded();e.columnModel.setColumnGroupOpened(e.params.columnGroup.getProvidedColumnGroup(),a,"uiColumnExpanded")}};this.addTouchAndClickListeners(this.eCloseIcon,r),this.addTouchAndClickListeners(this.eOpenIcon,r);var o=function(s){it(s)};this.addManagedListener(this.eCloseIcon,"dblclick",o),this.addManagedListener(this.eOpenIcon,"dblclick",o),this.addManagedListener(this.getGui(),"dblclick",r),this.updateIconVisibility();var i=this.params.columnGroup.getProvidedColumnGroup();this.addManagedListener(i,ie.EVENT_EXPANDED_CHANGED,this.updateIconVisibility.bind(this)),this.addManagedListener(i,ie.EVENT_EXPANDABLE_CHANGED,this.updateIconVisibility.bind(this))},t.prototype.addTouchAndClickListeners=function(e,r){var o=new me(e,!0);this.addManagedListener(o,me.EVENT_TAP,r),this.addDestroyFunc(function(){return o.destroy()}),this.addManagedListener(e,"click",r)},t.prototype.updateIconVisibility=function(){var e=this.params.columnGroup;if(e.isExpandable()){var r=this.params.columnGroup.isExpanded();$(this.eOpenIcon,r),$(this.eCloseIcon,!r)}else $(this.eOpenIcon,!1),$(this.eCloseIcon,!1)},t.prototype.addInIcon=function(e,r){var o=ne(e,this.gridOptionsService,null);o&&this.getRefElement(r).appendChild(o)},t.prototype.addGroupExpandIcon=function(){if(!this.params.columnGroup.isExpandable()){$(this.eOpenIcon,!1),$(this.eCloseIcon,!1);return}},t.prototype.setupLabel=function(){var e,r=this.params,o=r.displayName,i=r.columnGroup;if(P(o)){var s=ae(o,!0);this.getRefElement("agLabel").textContent=s}this.addOrRemoveCssClass("ag-sticky-label",!(!((e=i.getColGroupDef())===null||e===void 0)&&e.suppressStickyLabel))},t.TEMPLATE=``,ps([v("columnModel")],t.prototype,"columnModel",void 0),ps([L("agOpened")],t.prototype,"eOpenIcon",void 0),ps([L("agClosed")],t.prototype,"eCloseIcon",void 0),t}(k),Bd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),cr=function(n){Bd(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.isPopup=function(){return!0},t.prototype.setParentComponent=function(e){e.addCssClass("ag-has-popup"),n.prototype.setParentComponent.call(this,e)},t.prototype.destroy=function(){var e=this.parentComponent,r=e&&e.isAlive();r&&e.getGui().classList.remove("ag-has-popup"),n.prototype.destroy.call(this)},t}(k),kd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Wd=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},jd=function(n){kd(t,n);function t(){return n.call(this,t.TEMPLATE)||this}return t.prototype.init=function(e){this.params=e,this.focusAfterAttached=e.cellStartedEdit,this.eTextArea.setMaxLength(e.maxLength||200).setCols(e.cols||60).setRows(e.rows||10),P(e.value,!0)&&this.eTextArea.setValue(e.value.toString(),!0),this.addGuiEventListener("keydown",this.onKeyDown.bind(this)),this.activateTabIndex()},t.prototype.onKeyDown=function(e){var r=e.key;(r===_.LEFT||r===_.UP||r===_.RIGHT||r===_.DOWN||e.shiftKey&&r===_.ENTER)&&e.stopPropagation()},t.prototype.afterGuiAttached=function(){var e=this.localeService.getLocaleTextFunc();this.eTextArea.setInputAriaLabel(e("ariaInputEditor","Input Editor")),this.focusAfterAttached&&this.eTextArea.getFocusableElement().focus()},t.prototype.getValue=function(){var e=this.eTextArea.getValue();return!P(e)&&!P(this.params.value)?this.params.value:this.params.parseValue(e)},t.TEMPLATE=`
+ +
`,Wd([L("eTextArea")],t.prototype,"eTextArea",void 0),t}(cr),Ud=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Hl=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},zd=function(n){Ud(t,n);function t(){var e=n.call(this,`
+ +
`)||this;return e.startedByEnter=!1,e}return t.prototype.init=function(e){this.focusAfterAttached=e.cellStartedEdit;var r=this,o=r.eSelect,i=r.valueFormatterService,s=r.gridOptionsService,a=e.values,l=e.value,u=e.eventKey;if(H(a)){console.warn("AG Grid: no values found for select cellEditor");return}this.startedByEnter=u!=null?u===_.ENTER:!1;var c=!1;a.forEach(function(f){var y={value:f},m=i.formatValue(e.column,null,f),C=m!=null;y.text=C?m:f,o.addOption(y),c=c||l===f}),c?o.setValue(e.value,!0):e.values.length&&o.setValue(e.values[0],!0);var p=e.valueListGap,d=e.valueListMaxWidth,h=e.valueListMaxHeight;p!=null&&o.setPickerGap(p),h!=null&&o.setPickerMaxHeight(h),d!=null&&o.setPickerMaxWidth(d),s.get("editType")!=="fullRow"&&this.addManagedListener(this.eSelect,ei.EVENT_ITEM_SELECTED,function(){return e.stopEditing()})},t.prototype.afterGuiAttached=function(){var e=this;this.focusAfterAttached&&this.eSelect.getFocusableElement().focus(),this.startedByEnter&&setTimeout(function(){e.isAlive()&&e.eSelect.showPicker()})},t.prototype.focusIn=function(){this.eSelect.getFocusableElement().focus()},t.prototype.getValue=function(){return this.eSelect.getValue()},t.prototype.isPopup=function(){return!1},Hl([v("valueFormatterService")],t.prototype,"valueFormatterService",void 0),Hl([L("eSelect")],t.prototype,"eSelect",void 0),t}(cr),Kd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),$d=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},oi=function(n){Kd(t,n);function t(e){var r=n.call(this,` +
+ `.concat(e.getTemplate(),` +
`))||this;return r.cellEditorInput=e,r}return t.prototype.init=function(e){this.params=e;var r=this.eInput;this.cellEditorInput.init(r,e);var o;if(e.cellStartedEdit){this.focusAfterAttached=!0;var i=e.eventKey;i===_.BACKSPACE||e.eventKey===_.DELETE?o="":i&&i.length===1?o=i:(o=this.cellEditorInput.getStartValue(),i!==_.F2&&(this.highlightAllOnFocus=!0))}else this.focusAfterAttached=!1,o=this.cellEditorInput.getStartValue();o!=null&&r.setStartValue(o),this.addManagedListener(r.getGui(),"keydown",function(s){var a=s.key;(a===_.PAGE_UP||a===_.PAGE_DOWN)&&s.preventDefault()})},t.prototype.afterGuiAttached=function(){var e,r,o=this.localeService.getLocaleTextFunc(),i=this.eInput;if(i.setInputAriaLabel(o("ariaInputEditor","Input Editor")),!!this.focusAfterAttached){ht()||i.getFocusableElement().focus();var s=i.getInputElement();this.highlightAllOnFocus?s.select():(r=(e=this.cellEditorInput).setCaret)===null||r===void 0||r.call(e)}},t.prototype.focusIn=function(){var e=this.eInput,r=e.getFocusableElement(),o=e.getInputElement();r.focus(),o.select()},t.prototype.getValue=function(){return this.cellEditorInput.getValue()},t.prototype.isPopup=function(){return!1},$d([L("eInput")],t.prototype,"eInput",void 0),t}(cr),Yd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),qd=function(){function n(){}return n.prototype.getTemplate=function(){return''},n.prototype.init=function(t,e){this.eInput=t,this.params=e,e.maxLength!=null&&t.setMaxLength(e.maxLength)},n.prototype.getValue=function(){var t=this.eInput.getValue();return!P(t)&&!P(this.params.value)?this.params.value:this.params.parseValue(t)},n.prototype.getStartValue=function(){var t=this.params.useFormatter||this.params.column.getColDef().refData;return t?this.params.formatValue(this.params.value):this.params.value},n.prototype.setCaret=function(){var t=this.eInput.getValue(),e=P(t)&&t.length||0;e&&this.eInput.getInputElement().setSelectionRange(e,e)},n}(),Bl=function(n){Yd(t,n);function t(){return n.call(this,new qd)||this}return t}(oi),Qd=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Xd=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Jd="↑",Zd="↓",eh=function(n){Qd(t,n);function t(){var e=n.call(this)||this;e.refreshCount=0;var r=document.createElement("span"),o=document.createElement("span");o.setAttribute("class","ag-value-change-delta");var i=document.createElement("span");return i.setAttribute("class","ag-value-change-value"),r.appendChild(o),r.appendChild(i),e.setTemplateFromElement(r),e}return t.prototype.init=function(e){this.eValue=this.queryForHtmlElement(".ag-value-change-value"),this.eDelta=this.queryForHtmlElement(".ag-value-change-delta"),this.refresh(e,!0)},t.prototype.showDelta=function(e,r){var o=Math.abs(r),i=e.formatValue(o),s=P(i)?i:o,a=r>=0;a?this.eDelta.textContent=Jd+s:this.eDelta.textContent=Zd+s,this.eDelta.classList.toggle("ag-value-change-delta-up",a),this.eDelta.classList.toggle("ag-value-change-delta-down",!a)},t.prototype.setTimerToRemoveDelta=function(){var e=this;this.refreshCount++;var r=this.refreshCount;this.getFrameworkOverrides().wrapIncoming(function(){window.setTimeout(function(){r===e.refreshCount&&e.hideDeltaValue()},2e3)})},t.prototype.hideDeltaValue=function(){this.eValue.classList.remove("ag-value-change-value-highlight"),de(this.eDelta)},t.prototype.refresh=function(e,r){r===void 0&&(r=!1);var o=e.value;if(o===this.lastValue||(P(e.valueFormatted)?this.eValue.textContent=e.valueFormatted:P(e.value)?this.eValue.textContent=o:de(this.eValue),this.filterManager.isSuppressFlashingCellsBecauseFiltering()))return!1;if(typeof o=="number"&&typeof this.lastValue=="number"){var i=o-this.lastValue;this.showDelta(e,i)}return this.lastValue&&this.eValue.classList.add("ag-value-change-value-highlight"),r||this.setTimerToRemoveDelta(),this.lastValue=o,!0},Xd([v("filterManager")],t.prototype,"filterManager",void 0),t}(k),th=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),rh=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},oh=function(n){th(t,n);function t(){var e=n.call(this)||this;e.refreshCount=0;var r=document.createElement("span"),o=document.createElement("span");return o.setAttribute("class","ag-value-slide-current"),r.appendChild(o),e.setTemplateFromElement(r),e.eCurrent=e.queryForHtmlElement(".ag-value-slide-current"),e}return t.prototype.init=function(e){this.refresh(e,!0)},t.prototype.addSlideAnimation=function(){var e=this;this.refreshCount++;var r=this.refreshCount;this.ePrevious&&this.getGui().removeChild(this.ePrevious);var o=document.createElement("span");o.setAttribute("class","ag-value-slide-previous ag-value-slide-out"),this.ePrevious=o,this.ePrevious.textContent=this.eCurrent.textContent,this.getGui().insertBefore(this.ePrevious,this.eCurrent),this.getFrameworkOverrides().wrapIncoming(function(){window.setTimeout(function(){r===e.refreshCount&&e.ePrevious.classList.add("ag-value-slide-out-end")},50),window.setTimeout(function(){r===e.refreshCount&&(e.getGui().removeChild(e.ePrevious),e.ePrevious=null)},3e3)})},t.prototype.refresh=function(e,r){r===void 0&&(r=!1);var o=e.value;return H(o)&&(o=""),o===this.lastValue||this.filterManager.isSuppressFlashingCellsBecauseFiltering()?!1:(r||this.addSlideAnimation(),this.lastValue=o,P(e.valueFormatted)?this.eCurrent.textContent=e.valueFormatted:P(e.value)?this.eCurrent.textContent=o:de(this.eCurrent),!0)},rh([v("filterManager")],t.prototype,"filterManager",void 0),t}(k),br=function(){return br=Object.assign||function(n){for(var t,e=1,r=arguments.length;e0?r:void 0,level:this.level}),this.id!==null&&typeof this.id=="string"&&this.id.startsWith(n.ID_PREFIX_ROW_GROUP)&&console.error("AG Grid: Row IDs cannot start with ".concat(n.ID_PREFIX_ROW_GROUP,", this is a reserved prefix for AG Grid's row grouping feature.")),this.id!==null&&typeof this.id!="string"&&(this.id=""+this.id)}else this.id=void 0;else this.id=t},n.prototype.getGroupKeys=function(t){t===void 0&&(t=!1);var e=[],r=this;for(t&&(r=r.parent);r&&r.level>=0;)e.push(r.key),r=r.parent;return e.reverse(),e},n.prototype.isPixelInRange=function(t){return!P(this.rowTop)||!P(this.rowHeight)?!1:t>=this.rowTop&&to&&(o=u)}),!e&&((r||o<10)&&(o=this.beans.gridOptionsService.getRowHeightForNode(this).height),o!=this.rowHeight)){this.setRowHeight(o);var a=this.beans.rowModel;a.onRowHeightChangedDebounced&&a.onRowHeightChangedDebounced()}}},n.prototype.setRowIndex=function(t){this.rowIndex!==t&&(this.rowIndex=t,this.eventService&&this.eventService.dispatchEvent(this.createLocalRowEvent(n.EVENT_ROW_INDEX_CHANGED)))},n.prototype.setUiLevel=function(t){this.uiLevel!==t&&(this.uiLevel=t,this.eventService&&this.eventService.dispatchEvent(this.createLocalRowEvent(n.EVENT_UI_LEVEL_CHANGED)))},n.prototype.setExpanded=function(t,e){if(this.expanded!==t){this.expanded=t,this.eventService&&this.eventService.dispatchEvent(this.createLocalRowEvent(n.EVENT_EXPANDED_CHANGED));var r=Object.assign({},this.createGlobalRowEvent(g.EVENT_ROW_GROUP_OPENED),{expanded:t,event:e||null});this.beans.rowNodeEventThrottle.dispatchExpanded(r),this.sibling&&this.beans.rowRenderer.refreshCells({rowNodes:[this]})}},n.prototype.createGlobalRowEvent=function(t){return this.beans.gridOptionsService.addGridCommonParams({type:t,node:this,data:this.data,rowIndex:this.rowIndex,rowPinned:this.rowPinned})},n.prototype.dispatchLocalEvent=function(t){this.eventService&&this.eventService.dispatchEvent(t)},n.prototype.setDataValue=function(t,e,r){var o=this,i=function(){var u;return typeof t!="string"?t:(u=o.beans.columnModel.getGridColumn(t))!==null&&u!==void 0?u:o.beans.columnModel.getPrimaryColumn(t)},s=i(),a=this.getValueFromValueService(s);if(this.beans.gridOptionsService.get("readOnlyEdit"))return this.dispatchEventForSaveValueReadOnly(s,a,e,r),!1;var l=this.beans.valueService.setValue(this,s,e,r);return this.dispatchCellChangedEvent(s,e,a),this.checkRowSelectable(),l},n.prototype.getValueFromValueService=function(t){var e=this.leafGroup&&this.beans.columnModel.isPivotMode(),r=this.group&&this.expanded&&!this.footer&&!e,o=this.beans.gridOptionsService.getGroupIncludeFooter(),i=o({node:this}),s=this.beans.gridOptionsService.get("groupSuppressBlankHeader"),a=r&&i&&!s,l=this.beans.valueService.getValue(t,this,!1,a);return l},n.prototype.dispatchEventForSaveValueReadOnly=function(t,e,r,o){var i=this.beans.gridOptionsService.addGridCommonParams({type:g.EVENT_CELL_EDIT_REQUEST,event:null,rowIndex:this.rowIndex,rowPinned:this.rowPinned,column:t,colDef:t.getColDef(),data:this.data,node:this,oldValue:e,newValue:r,value:r,source:o});this.beans.eventService.dispatchEvent(i)},n.prototype.setGroupValue=function(t,e){var r=this.beans.columnModel.getGridColumn(t);H(this.groupData)&&(this.groupData={});var o=r.getColId(),i=this.groupData[o];i!==e&&(this.groupData[o]=e,this.dispatchCellChangedEvent(r,e,i))},n.prototype.setAggData=function(t){var e=this,r=this.aggData;if(this.aggData=t,this.eventService){var o=function(s){var a=e.aggData?e.aggData[s]:void 0,l=r?r[s]:void 0;if(a!==l){var u=e.beans.columnModel.lookupGridColumn(s);u&&e.dispatchCellChangedEvent(u,a,l)}};for(var i in this.aggData)o(i);for(var i in t)i in this.aggData||o(i)}},n.prototype.updateHasChildren=function(){var t=this.group&&!this.footer||this.childrenAfterGroup&&this.childrenAfterGroup.length>0,e=this.beans.gridOptionsService.isRowModelType("serverSide");if(e){var r=this.beans.gridOptionsService.get("treeData"),o=this.beans.gridOptionsService.get("isServerSideGroup");t=!this.stub&&!this.footer&&(r?!!o&&o(this.data):!!this.group)}t!==this.__hasChildren&&(this.__hasChildren=!!t,this.eventService&&this.eventService.dispatchEvent(this.createLocalRowEvent(n.EVENT_HAS_CHILDREN_CHANGED)))},n.prototype.hasChildren=function(){return this.__hasChildren==null&&this.updateHasChildren(),this.__hasChildren},n.prototype.isEmptyRowGroupNode=function(){return this.group&&Ge(this.childrenAfterGroup)},n.prototype.dispatchCellChangedEvent=function(t,e,r){var o={type:n.EVENT_CELL_CHANGED,node:this,column:t,newValue:e,oldValue:r};this.dispatchLocalEvent(o)},n.prototype.resetQuickFilterAggregateText=function(){this.quickFilterAggregateText=null},n.prototype.isExpandable=function(){return this.footer?!1:this.beans.columnModel.isPivotMode()?this.hasChildren()&&!this.leafGroup:this.hasChildren()||!!this.master},n.prototype.isSelected=function(){return this.footer?this.sibling.isSelected():this.selected},n.prototype.depthFirstSearch=function(t){this.childrenAfterGroup&&this.childrenAfterGroup.forEach(function(e){return e.depthFirstSearch(t)}),t(this)},n.prototype.calculateSelectedFromChildren=function(){var t,e=!1,r=!1,o=!1;if(!(!((t=this.childrenAfterGroup)===null||t===void 0)&&t.length))return this.selectable?this.selected:null;for(var i=0;i=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Wl=function(n){ih(t,n);function t(){return n.call(this,` + `)||this}return t.prototype.postConstruct=function(){this.eCheckbox.setPassive(!0)},t.prototype.getCheckboxId=function(){return this.eCheckbox.getInputElement().id},t.prototype.onDataChanged=function(){this.onSelectionChanged()},t.prototype.onSelectableChanged=function(){this.showOrHideSelect()},t.prototype.onSelectionChanged=function(){var e=this.rowNode.isSelected();this.eCheckbox.setValue(e,!0)},t.prototype.onClicked=function(e,r,o){return this.rowNode.setSelectedParams({newValue:e,rangeSelect:o.shiftKey,groupSelectsFiltered:r,event:o,source:"checkboxSelected"})},t.prototype.init=function(e){var r=this;this.rowNode=e.rowNode,this.column=e.column,this.overrides=e.overrides,this.onSelectionChanged(),this.addManagedListener(this.eCheckbox.getInputElement(),"dblclick",function(a){it(a)}),this.addManagedListener(this.eCheckbox.getInputElement(),"click",function(a){it(a);var l=r.gridOptionsService.get("groupSelectsFiltered"),u=r.eCheckbox.getValue();if(r.shouldHandleIndeterminateState(u,l)){var c=r.onClicked(!0,l,a||{});c===0&&r.onClicked(!1,l,a)}else u?r.onClicked(!1,l,a):r.onClicked(!0,l,a||{})}),this.addManagedListener(this.rowNode,U.EVENT_ROW_SELECTED,this.onSelectionChanged.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_DATA_CHANGED,this.onDataChanged.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_SELECTABLE_CHANGED,this.onSelectableChanged.bind(this));var o=this.gridOptionsService.get("isRowSelectable"),i=o||typeof this.getIsVisible()=="function";if(i){var s=this.showOrHideSelect.bind(this);this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,s),this.addManagedListener(this.rowNode,U.EVENT_DATA_CHANGED,s),this.addManagedListener(this.rowNode,U.EVENT_CELL_CHANGED,s),this.showOrHideSelect()}this.eCheckbox.getInputElement().setAttribute("tabindex","-1")},t.prototype.shouldHandleIndeterminateState=function(e,r){return r&&(this.eCheckbox.getPreviousValue()===void 0||e===void 0)&&this.gridOptionsService.isRowModelType("clientSide")},t.prototype.showOrHideSelect=function(){var e,r,o,i,s=this.rowNode.selectable,a=this.getIsVisible();if(s)if(typeof a=="function"){var l=(e=this.overrides)===null||e===void 0?void 0:e.callbackParams,u=(r=this.column)===null||r===void 0?void 0:r.createColumnFunctionCallbackParams(this.rowNode);s=u?a(ii(ii({},l),u)):!1}else s=a??!1;var c=(o=this.column)===null||o===void 0?void 0:o.getColDef().showDisabledCheckboxes;if(c){this.eCheckbox.setDisabled(!s),this.setVisible(!0),this.setDisplayed(!0);return}if(!((i=this.overrides)===null||i===void 0)&&i.removeHidden){this.setDisplayed(s);return}this.setVisible(s)},t.prototype.getIsVisible=function(){var e,r;return this.overrides?this.overrides.isVisible:(r=(e=this.column)===null||e===void 0?void 0:e.getColDef())===null||r===void 0?void 0:r.checkboxSelection},kl([L("eCheckbox")],t.prototype,"eCheckbox",void 0),kl([F],t.prototype,"postConstruct",null),t}(k),Fr;(function(n){n[n.Up=0]="Up",n[n.Down=1]="Down"})(Fr||(Fr={}));var Ue;(function(n){n[n.Left=0]="Left",n[n.Right=1]="Right"})(Ue||(Ue={}));var nh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),pr=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},ni=function(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],r=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Te;(function(n){n[n.ToolPanel=0]="ToolPanel",n[n.HeaderCell=1]="HeaderCell",n[n.RowDrag=2]="RowDrag",n[n.ChartPanel=3]="ChartPanel",n[n.AdvancedFilterBuilder=4]="AdvancedFilterBuilder"})(Te||(Te={}));var he=function(n){nh(t,n);function t(){var r=n!==null&&n.apply(this,arguments)||this;return r.dragSourceAndParamsList=[],r.dropTargets=[],r}e=t,t.prototype.init=function(){this.ePinnedIcon=Ze("columnMovePin",this.gridOptionsService,null),this.eHideIcon=Ze("columnMoveHide",this.gridOptionsService,null),this.eMoveIcon=Ze("columnMoveMove",this.gridOptionsService,null),this.eLeftIcon=Ze("columnMoveLeft",this.gridOptionsService,null),this.eRightIcon=Ze("columnMoveRight",this.gridOptionsService,null),this.eGroupIcon=Ze("columnMoveGroup",this.gridOptionsService,null),this.eAggregateIcon=Ze("columnMoveValue",this.gridOptionsService,null),this.ePivotIcon=Ze("columnMovePivot",this.gridOptionsService,null),this.eDropNotAllowedIcon=Ze("dropNotAllowed",this.gridOptionsService,null)},t.prototype.addDragSource=function(r,o){o===void 0&&(o=!1);var i={eElement:r.eElement,dragStartPixels:r.dragStartPixels,onDragStart:this.onDragStart.bind(this,r),onDragStop:this.onDragStop.bind(this),onDragging:this.onDragging.bind(this),includeTouch:o};this.dragSourceAndParamsList.push({params:i,dragSource:r}),this.dragService.addDragSource(i)},t.prototype.removeDragSource=function(r){var o=this.dragSourceAndParamsList.find(function(i){return i.dragSource===r});o&&(this.dragService.removeDragSource(o.params),Ee(this.dragSourceAndParamsList,o))},t.prototype.clearDragSourceParamsList=function(){var r=this;this.dragSourceAndParamsList.forEach(function(o){return r.dragService.removeDragSource(o.params)}),this.dragSourceAndParamsList.length=0,this.dropTargets.length=0},t.prototype.nudge=function(){this.dragging&&this.onDragging(this.eventLastTime,!0)},t.prototype.onDragStart=function(r,o){this.dragging=!0,this.dragSource=r,this.eventLastTime=o,this.dragItem=this.dragSource.getDragItem(),this.dragSource.onDragStarted&&this.dragSource.onDragStarted(),this.createGhost()},t.prototype.onDragStop=function(r){if(this.eventLastTime=null,this.dragging=!1,this.dragSource.onDragStopped&&this.dragSource.onDragStopped(),this.lastDropTarget&&this.lastDropTarget.onDragStop){var o=this.createDropTargetEvent(this.lastDropTarget,r,null,null,!1);this.lastDropTarget.onDragStop(o)}this.lastDropTarget=null,this.dragItem=null,this.removeGhost()},t.prototype.onDragging=function(r,o){var i=this,s,a,l,u,c=this.getHorizontalDirection(r),p=this.getVerticalDirection(r);this.eventLastTime=r,this.positionGhost(r);var d=this.dropTargets.filter(function(y){return i.isMouseOnDropTarget(r,y)}),h=this.findCurrentDropTarget(r,d);if(h!==this.lastDropTarget)this.leaveLastTargetIfExists(r,c,p,o),this.lastDropTarget!==null&&h===null&&((a=(s=this.dragSource).onGridExit)===null||a===void 0||a.call(s,this.dragItem)),this.lastDropTarget===null&&h!==null&&((u=(l=this.dragSource).onGridEnter)===null||u===void 0||u.call(l,this.dragItem)),this.enterDragTargetIfExists(h,r,c,p,o),this.lastDropTarget=h;else if(h&&h.onDragging){var f=this.createDropTargetEvent(h,r,c,p,o);h.onDragging(f)}},t.prototype.getAllContainersFromDropTarget=function(r){var o=r.getSecondaryContainers?r.getSecondaryContainers():null,i=[[r.getContainer()]];return o?i.concat(o):i},t.prototype.allContainersIntersect=function(r,o){var i,s;try{for(var a=ni(o),l=a.next();!l.done;l=a.next()){var u=l.value,c=u.getBoundingClientRect();if(c.width===0||c.height===0)return!1;var p=r.clientX>=c.left&&r.clientX=c.top&&r.clientYi?Ue.Left:Ue.Right},t.prototype.getVerticalDirection=function(r){var o=this.eventLastTime&&this.eventLastTime.clientY,i=r.clientY;return o===i?null:o>i?Fr.Up:Fr.Down},t.prototype.createDropTargetEvent=function(r,o,i,s,a){var l=r.getContainer(),u=l.getBoundingClientRect(),c=this,p=c.gridApi,d=c.columnApi,h=c.dragItem,f=c.dragSource,y=o.clientX-u.left,m=o.clientY-u.top;return{event:o,x:y,y:m,vDirection:s,hDirection:i,dragSource:f,fromNudge:a,dragItem:h,api:p,columnApi:d,dropZoneTarget:l}},t.prototype.positionGhost=function(r){var o=this.eGhost;if(o){var i=o.getBoundingClientRect(),s=i.height,a=Ya()-2,l=qa()-2,u=Bn(o.offsetParent),c=r.clientY,p=r.clientX,d=c-u.top-s/2,h=p-u.left-10,f=this.gridOptionsService.getDocument(),y=f.defaultView||window,m=y.pageYOffset||f.documentElement.scrollTop,C=y.pageXOffset||f.documentElement.scrollLeft;a>0&&h+o.clientWidth>a+C&&(h=a+C-o.clientWidth),h<0&&(h=0),l>0&&d+o.clientHeight>l+m&&(d=l+m-o.clientHeight),d<0&&(d=0),o.style.left="".concat(h,"px"),o.style.top="".concat(d,"px")}},t.prototype.removeGhost=function(){this.eGhost&&this.eGhostParent&&this.eGhostParent.removeChild(this.eGhost),this.eGhost=null},t.prototype.createGhost=function(){this.eGhost=Re(e.GHOST_TEMPLATE),this.mouseEventService.stampTopLevelGridCompWithGridInstance(this.eGhost);var r=this.environment.getTheme().theme;r&&this.eGhost.classList.add(r),this.eGhostIcon=this.eGhost.querySelector(".ag-dnd-ghost-icon"),this.setGhostIcon(null);var o=this.eGhost.querySelector(".ag-dnd-ghost-label"),i=this.dragSource.dragItemName;Ho(i)&&(i=i()),o.innerHTML=ae(i)||"",this.eGhost.style.height="25px",this.eGhost.style.top="20px",this.eGhost.style.left="20px";var s=this.gridOptionsService.getDocument(),a=null,l=null;try{a=s.fullscreenElement}catch{}finally{a||(a=this.gridOptionsService.getRootNode());var u=a.querySelector("body");u?l=u:a instanceof ShadowRoot?l=a:a instanceof Document?l=a==null?void 0:a.documentElement:l=a}this.eGhostParent=l,this.eGhostParent?this.eGhostParent.appendChild(this.eGhost):console.warn("AG Grid: could not find document body, it is needed for dragging columns")},t.prototype.setGhostIcon=function(r,o){o===void 0&&(o=!1),de(this.eGhostIcon);var i=null;switch(r||(r=this.dragSource.getDefaultIconName?this.dragSource.getDefaultIconName():e.ICON_NOT_ALLOWED),r){case e.ICON_PINNED:i=this.ePinnedIcon;break;case e.ICON_MOVE:i=this.eMoveIcon;break;case e.ICON_LEFT:i=this.eLeftIcon;break;case e.ICON_RIGHT:i=this.eRightIcon;break;case e.ICON_GROUP:i=this.eGroupIcon;break;case e.ICON_AGGREGATE:i=this.eAggregateIcon;break;case e.ICON_PIVOT:i=this.ePivotIcon;break;case e.ICON_NOT_ALLOWED:i=this.eDropNotAllowedIcon;break;case e.ICON_HIDE:i=this.eHideIcon;break}this.eGhostIcon.classList.toggle("ag-shake-left-to-right",o),!(i===this.eHideIcon&&this.gridOptionsService.get("suppressDragLeaveHidesColumns"))&&i&&this.eGhostIcon.appendChild(i)};var e;return t.ICON_PINNED="pinned",t.ICON_MOVE="move",t.ICON_LEFT="left",t.ICON_RIGHT="right",t.ICON_GROUP="group",t.ICON_AGGREGATE="aggregate",t.ICON_PIVOT="pivot",t.ICON_NOT_ALLOWED="notAllowed",t.ICON_HIDE="hide",t.GHOST_TEMPLATE=`
+ +
+
`,pr([v("dragService")],t.prototype,"dragService",void 0),pr([v("mouseEventService")],t.prototype,"mouseEventService",void 0),pr([v("columnApi")],t.prototype,"columnApi",void 0),pr([v("gridApi")],t.prototype,"gridApi",void 0),pr([F],t.prototype,"init",null),pr([Se],t.prototype,"clearDragSourceParamsList",null),t=e=pr([x("dragAndDropService")],t),t}(D),si=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),io=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},ai=function(n){si(t,n);function t(e,r,o,i,s,a){var l=n.call(this)||this;return l.cellValueFn=e,l.rowNode=r,l.column=o,l.customGui=i,l.dragStartPixels=s,l.suppressVisibilityChange=a,l.dragSource=null,l}return t.prototype.isCustomGui=function(){return this.customGui!=null},t.prototype.postConstruct=function(){if(this.customGui?this.setDragElement(this.customGui,this.dragStartPixels):(this.setTemplate(''),this.getGui().appendChild(ne("rowDrag",this.gridOptionsService,null)),this.addDragSource()),this.checkCompatibility(),!this.suppressVisibilityChange){var e=this.gridOptionsService.get("rowDragManaged")?new ah(this,this.beans,this.rowNode,this.column):new sh(this,this.beans,this.rowNode,this.column);this.createManagedBean(e,this.beans.context)}},t.prototype.setDragElement=function(e,r){this.setTemplateFromElement(e),this.addDragSource(r)},t.prototype.getSelectedNodes=function(){var e=this.gridOptionsService.get("rowDragMultiRow");if(!e)return[this.rowNode];var r=this.beans.selectionService.getSelectedNodes();return r.indexOf(this.rowNode)!==-1?r:[this.rowNode]},t.prototype.checkCompatibility=function(){var e=this.gridOptionsService.get("rowDragManaged"),r=this.gridOptionsService.get("treeData");r&&e&&V("If using row drag with tree data, you cannot have rowDragManaged=true")},t.prototype.getDragItem=function(){return{rowNode:this.rowNode,rowNodes:this.getSelectedNodes(),columns:this.column?[this.column]:void 0,defaultTextValue:this.cellValueFn()}},t.prototype.getRowDragText=function(e){if(e){var r=e.getColDef();if(r.rowDragText)return r.rowDragText}return this.gridOptionsService.get("rowDragText")},t.prototype.addDragSource=function(e){var r=this;e===void 0&&(e=4),this.dragSource&&this.removeDragSource();var o=this.localeService.getLocaleTextFunc();this.dragSource={type:Te.RowDrag,eElement:this.getGui(),dragItemName:function(){var i,s=r.getDragItem(),a=((i=s.rowNodes)===null||i===void 0?void 0:i.length)||1,l=r.getRowDragText(r.column);return l?l(s,a):a===1?r.cellValueFn():"".concat(a," ").concat(o("rowDragRows","rows"))},getDragItem:function(){return r.getDragItem()},dragStartPixels:e,dragSourceDomDataKey:this.gridOptionsService.getDomDataKey()},this.beans.dragAndDropService.addDragSource(this.dragSource,!0)},t.prototype.removeDragSource=function(){this.dragSource&&this.beans.dragAndDropService.removeDragSource(this.dragSource),this.dragSource=null},io([v("beans")],t.prototype,"beans",void 0),io([F],t.prototype,"postConstruct",null),io([Se],t.prototype,"removeDragSource",null),t}(k),jl=function(n){si(t,n);function t(e,r,o){var i=n.call(this)||this;return i.parent=e,i.rowNode=r,i.column=o,i}return t.prototype.setDisplayedOrVisible=function(e){var r={skipAriaHidden:!0};if(e)this.parent.setDisplayed(!1,r);else{var o=!0,i=!1;this.column&&(o=this.column.isRowDrag(this.rowNode)||this.parent.isCustomGui(),i=Ho(this.column.getColDef().rowDrag)),i?(this.parent.setDisplayed(!0,r),this.parent.setVisible(o,r)):(this.parent.setDisplayed(o,r),this.parent.setVisible(!0,r))}},t}(D),sh=function(n){si(t,n);function t(e,r,o,i){var s=n.call(this,e,o,i)||this;return s.beans=r,s}return t.prototype.postConstruct=function(){this.addManagedPropertyListener("suppressRowDrag",this.onSuppressRowDrag.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_DATA_CHANGED,this.workOutVisibility.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_CELL_CHANGED,this.workOutVisibility.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_CELL_CHANGED,this.workOutVisibility.bind(this)),this.addManagedListener(this.beans.eventService,g.EVENT_NEW_COLUMNS_LOADED,this.workOutVisibility.bind(this)),this.workOutVisibility()},t.prototype.onSuppressRowDrag=function(){this.workOutVisibility()},t.prototype.workOutVisibility=function(){var e=this.gridOptionsService.get("suppressRowDrag");this.setDisplayedOrVisible(e)},io([F],t.prototype,"postConstruct",null),t}(jl),ah=function(n){si(t,n);function t(e,r,o,i){var s=n.call(this,e,o,i)||this;return s.beans=r,s}return t.prototype.postConstruct=function(){this.addManagedListener(this.beans.eventService,g.EVENT_SORT_CHANGED,this.workOutVisibility.bind(this)),this.addManagedListener(this.beans.eventService,g.EVENT_FILTER_CHANGED,this.workOutVisibility.bind(this)),this.addManagedListener(this.beans.eventService,g.EVENT_COLUMN_ROW_GROUP_CHANGED,this.workOutVisibility.bind(this)),this.addManagedListener(this.beans.eventService,g.EVENT_NEW_COLUMNS_LOADED,this.workOutVisibility.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_DATA_CHANGED,this.workOutVisibility.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_CELL_CHANGED,this.workOutVisibility.bind(this)),this.addManagedPropertyListener("suppressRowDrag",this.onSuppressRowDrag.bind(this)),this.workOutVisibility()},t.prototype.onSuppressRowDrag=function(){this.workOutVisibility()},t.prototype.workOutVisibility=function(){var e=this.beans.ctrlsService.getGridBodyCtrl(),r=e.getRowDragFeature(),o=r&&r.shouldPreventRowMove(),i=this.gridOptionsService.get("suppressRowDrag"),s=this.beans.dragAndDropService.hasExternalDropZones(),a=o&&!s||i;this.setDisplayedOrVisible(a)},io([F],t.prototype,"postConstruct",null),t}(jl),lh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),li=function(){return li=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},uh=function(n){lh(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.init=function(e,r,o,i,s,a,l){var u,c,p,d;this.params=l,this.eGui=r,this.eCheckbox=o,this.eExpanded=i,this.eContracted=s,this.comp=e,this.compClass=a;var h=l.node;l.value;var f=l.colDef,y=this.isTopLevelFooter();if(!y){var m=this.isEmbeddedRowMismatch();if(m)return;if(h.footer&&this.gridOptionsService.get("groupHideOpenParents")){var C=f&&f.showRowGroup,w=h.rowGroupColumn&&h.rowGroupColumn.getColId();if(C!==w)return}}if(this.setupShowingValueForOpenedParent(),this.findDisplayedGroupNode(),!y){var E=l.node.footer&&l.node.rowGroupIndex===this.columnModel.getRowGroupColumns().findIndex(function(N){var I;return N.getColId()===((I=l.colDef)===null||I===void 0?void 0:I.showRowGroup)}),S=this.gridOptionsService.get("groupDisplayType")!="multipleColumns"||this.gridOptionsService.get("treeData"),R=S||this.gridOptionsService.get("showOpenedGroup")&&!l.node.footer&&(!l.node.group||l.node.rowGroupIndex!=null&&l.node.rowGroupIndex>this.columnModel.getRowGroupColumns().findIndex(function(N){var I;return N.getColId()===((I=l.colDef)===null||I===void 0?void 0:I.showRowGroup)})),O=!h.group&&(((u=this.params.colDef)===null||u===void 0?void 0:u.field)||((c=this.params.colDef)===null||c===void 0?void 0:c.valueGetter)),b=this.isExpandable(),A=this.columnModel.isPivotMode()&&h.leafGroup&&((p=h.rowGroupColumn)===null||p===void 0?void 0:p.getColId())===((d=l.column)===null||d===void 0?void 0:d.getColDef().showRowGroup),M=!this.showingValueForOpenedParent&&!b&&!O&&!R&&!E&&!A;if(M)return}this.addExpandAndContract(),this.addFullWidthRowDraggerIfNeeded(),this.addCheckboxIfNeeded(),this.addValueElement(),this.setupIndent(),this.refreshAriaExpanded()},t.prototype.getCellAriaRole=function(){var e,r,o=(e=this.params.colDef)===null||e===void 0?void 0:e.cellAriaRole,i=(r=this.params.column)===null||r===void 0?void 0:r.getColDef().cellAriaRole;return o||i||"gridcell"},t.prototype.destroy=function(){n.prototype.destroy.call(this),this.expandListener=null},t.prototype.refreshAriaExpanded=function(){var e=this.params,r=e.node,o=e.eGridCell;if(this.expandListener&&(this.expandListener=this.expandListener()),!this.isExpandable()){Ba(o);return}var i=function(){Pt(o,!!r.expanded)};this.expandListener=this.addManagedListener(r,U.EVENT_EXPANDED_CHANGED,i)||null,i()},t.prototype.isTopLevelFooter=function(){if(!this.gridOptionsService.get("groupIncludeTotalFooter")||this.params.value!=null||this.params.node.level!=-1)return!1;var e=this.params.colDef,r=e==null;if(r||e.showRowGroup===!0)return!0;var o=this.columnModel.getRowGroupColumns();if(!o||o.length===0)return!0;var i=o[0];return i.getId()===e.showRowGroup},t.prototype.isEmbeddedRowMismatch=function(){if(!this.params.fullWidth||!this.gridOptionsService.get("embedFullWidthRows"))return!1;var e=this.params.pinned==="left",r=this.params.pinned==="right",o=!e&&!r;return this.gridOptionsService.get("enableRtl")?this.columnModel.isPinningLeft()?!r:!o:this.columnModel.isPinningLeft()?!e:!o},t.prototype.findDisplayedGroupNode=function(){var e=this.params.column,r=this.params.node;if(this.showingValueForOpenedParent)for(var o=r.parent;o!=null;){if(o.rowGroupColumn&&e.isRowGroupDisplayed(o.rowGroupColumn.getId())){this.displayedGroupNode=o;break}o=o.parent}H(this.displayedGroupNode)&&(this.displayedGroupNode=r)},t.prototype.setupShowingValueForOpenedParent=function(){var e=this.params.node,r=this.params.column;if(!this.gridOptionsService.get("groupHideOpenParents")){this.showingValueForOpenedParent=!1;return}if(!e.groupData){this.showingValueForOpenedParent=!1;return}var o=e.rowGroupColumn!=null;if(o){var i=e.rowGroupColumn.getId(),s=r.isRowGroupDisplayed(i);if(s){this.showingValueForOpenedParent=!1;return}}var a=e.groupData[r.getId()]!=null;this.showingValueForOpenedParent=a},t.prototype.addValueElement=function(){this.displayedGroupNode.footer?this.addFooterValue():(this.addGroupValue(),this.addChildCount())},t.prototype.addGroupValue=function(){var e,r=this.adjustParamsWithDetailsFromRelatedColumn(),o=this.getInnerCompDetails(r),i=r.valueFormatted,s=r.value,a=i;if(a==null){var l=this.displayedGroupNode.rowGroupColumn&&((e=this.params.column)===null||e===void 0?void 0:e.isRowGroupDisplayed(this.displayedGroupNode.rowGroupColumn.getId()));if(this.displayedGroupNode.key===""&&this.displayedGroupNode.group&&l){var u=this.localeService.getLocaleTextFunc();a=u("blanks","(Blanks)")}else a=s??null}this.comp.setInnerRenderer(o,a)},t.prototype.adjustParamsWithDetailsFromRelatedColumn=function(){var e=this.displayedGroupNode.rowGroupColumn,r=this.params.column;if(!e)return this.params;var o=r!=null;if(o){var i=r.isRowGroupDisplayed(e.getId());if(!i)return this.params}var s=this.params,a=this.params,l=a.value,u=a.node,c=this.valueFormatterService.formatValue(e,u,l),p=li(li({},s),{valueFormatted:c});return p},t.prototype.addFooterValue=function(){var e=this.params.footerValueGetter,r="";if(e){var o=qi(this.params);o.value=this.params.value,typeof e=="function"?r=e(o):typeof e=="string"?r=this.expressionService.evaluate(e,o):console.warn("AG Grid: footerValueGetter should be either a function or a string (expression)")}else{var i=this.localeService.getLocaleTextFunc(),s=i("footerTotal","Total");r=s+" "+(this.params.value!=null?this.params.value:"")}var a=this.getInnerCompDetails(this.params);this.comp.setInnerRenderer(a,r)},t.prototype.getInnerCompDetails=function(e){var r=this;if(e.fullWidth)return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptionsService.get("groupRowRendererParams"),e);var o=this.userComponentFactory.getInnerRendererDetails(e,e),i=function(c){return c&&c.componentClass==r.compClass};if(o&&!i(o))return o;var s=this.displayedGroupNode.rowGroupColumn,a=s?s.getColDef():void 0;if(a){var l=this.userComponentFactory.getCellRendererDetails(a,e);if(l&&!i(l))return l;if(i(l)&&a.cellRendererParams&&a.cellRendererParams.innerRenderer){var u=this.userComponentFactory.getInnerRendererDetails(a.cellRendererParams,e);return u}}},t.prototype.addChildCount=function(){this.params.suppressCount||(this.addManagedListener(this.displayedGroupNode,U.EVENT_ALL_CHILDREN_COUNT_CHANGED,this.updateChildCount.bind(this)),this.updateChildCount())},t.prototype.updateChildCount=function(){var e=this.displayedGroupNode.allChildrenCount,r=this.isShowRowGroupForThisRow(),o=r&&e!=null&&e>=0,i=o?"(".concat(e,")"):"";this.comp.setChildCount(i)},t.prototype.isShowRowGroupForThisRow=function(){if(this.gridOptionsService.get("treeData"))return!0;var e=this.displayedGroupNode.rowGroupColumn;if(!e)return!1;var r=this.params.column,o=r==null||r.isRowGroupDisplayed(e.getId());return o},t.prototype.addExpandAndContract=function(){var e,r=this.params,o=ne("groupExpanded",this.gridOptionsService,null),i=ne("groupContracted",this.gridOptionsService,null);o&&this.eExpanded.appendChild(o),i&&this.eContracted.appendChild(i);var s=r.eGridCell,a=((e=this.params.column)===null||e===void 0?void 0:e.isCellEditable(r.node))&&this.gridOptionsService.get("enableGroupEdit");!a&&this.isExpandable()&&!r.suppressDoubleClickExpand&&this.addManagedListener(s,"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(s,"keydown",this.onKeyDown.bind(this)),this.addManagedListener(r.node,U.EVENT_EXPANDED_CHANGED,this.showExpandAndContractIcons.bind(this)),this.showExpandAndContractIcons();var l=this.onRowNodeIsExpandableChanged.bind(this);this.addManagedListener(this.displayedGroupNode,U.EVENT_ALL_CHILDREN_COUNT_CHANGED,l),this.addManagedListener(this.displayedGroupNode,U.EVENT_MASTER_CHANGED,l),this.addManagedListener(this.displayedGroupNode,U.EVENT_GROUP_CHANGED,l),this.addManagedListener(this.displayedGroupNode,U.EVENT_HAS_CHILDREN_CHANGED,l)},t.prototype.onExpandClicked=function(e){nt(e)||(it(e),this.onExpandOrContract(e))},t.prototype.onExpandOrContract=function(e){var r=this.displayedGroupNode,o=!r.expanded;!o&&r.sticky&&this.scrollToStickyNode(r),r.setExpanded(o,e)},t.prototype.scrollToStickyNode=function(e){var r=this.ctrlsService.getGridBodyCtrl(),o=r.getScrollFeature();o.setVerticalScrollPosition(e.rowTop-e.stickyRowTop)},t.prototype.isExpandable=function(){if(this.showingValueForOpenedParent)return!0;var e=this.displayedGroupNode,r=this.columnModel.isPivotMode()&&e.leafGroup,o=e.isExpandable()&&!e.footer&&!r;if(!o)return!1;var i=this.params.column,s=i!=null&&typeof i.getColDef().showRowGroup=="string";if(s){var a=this.isShowRowGroupForThisRow();return a}return!0},t.prototype.showExpandAndContractIcons=function(){var e=this,r=e.params,o=e.displayedGroupNode,i=e.columnModel,s=r.node,a=this.isExpandable();if(a){var l=this.showingValueForOpenedParent?!0:s.expanded;this.comp.setExpandedDisplayed(l),this.comp.setContractedDisplayed(!l)}else this.comp.setExpandedDisplayed(!1),this.comp.setContractedDisplayed(!1);var u=i.isPivotMode(),c=u&&o.leafGroup,p=a&&!c,d=s.footer&&s.level===-1;this.comp.addOrRemoveCssClass("ag-cell-expandable",p),this.comp.addOrRemoveCssClass("ag-row-group",p),u?this.comp.addOrRemoveCssClass("ag-pivot-leaf-group",c):d||this.comp.addOrRemoveCssClass("ag-row-group-leaf-indent",!p)},t.prototype.onRowNodeIsExpandableChanged=function(){this.showExpandAndContractIcons(),this.setIndent(),this.refreshAriaExpanded()},t.prototype.setupIndent=function(){var e=this.params.node,r=this.params.suppressPadding;r||(this.addManagedListener(e,U.EVENT_UI_LEVEL_CHANGED,this.setIndent.bind(this)),this.setIndent())},t.prototype.setIndent=function(){if(!this.gridOptionsService.get("groupHideOpenParents")){var e=this.params,r=e.node,o=!!e.colDef,i=this.gridOptionsService.get("treeData"),s=!o||i||e.colDef.showRowGroup===!0,a=s?r.uiLevel:0;this.indentClass&&this.comp.addOrRemoveCssClass(this.indentClass,!1),this.indentClass="ag-row-group-indent-"+a,this.comp.addOrRemoveCssClass(this.indentClass,!0)}},t.prototype.addFullWidthRowDraggerIfNeeded=function(){var e=this;if(!(!this.params.fullWidth||!this.params.rowDrag)){var r=new ai(function(){return e.params.value},this.params.node);this.createManagedBean(r,this.context),this.eGui.insertAdjacentElement("afterbegin",r.getGui())}},t.prototype.isUserWantsSelected=function(){var e=this.params.checkbox;return typeof e=="function"||e===!0},t.prototype.addCheckboxIfNeeded=function(){var e=this,r=this.displayedGroupNode,o=this.isUserWantsSelected()&&!r.footer&&!r.rowPinned&&!r.detail;if(o){var i=new Wl;this.getContext().createBean(i),i.init({rowNode:this.params.node,column:this.params.column,overrides:{isVisible:this.params.checkbox,callbackParams:this.params,removeHidden:!0}}),this.eCheckbox.appendChild(i.getGui()),this.addDestroyFunc(function(){return e.getContext().destroyBean(i)})}this.comp.setCheckboxVisible(o)},t.prototype.onKeyDown=function(e){var r=e.key===_.ENTER;if(!(!r||this.params.suppressEnterExpand)){var o=this.params.column&&this.params.column.isCellEditable(this.params.node);o||this.onExpandOrContract(e)}},t.prototype.onCellDblClicked=function(e){if(!nt(e)){var r=Wo(this.eExpanded,e)||Wo(this.eContracted,e);r||this.onExpandOrContract(e)}},no([v("expressionService")],t.prototype,"expressionService",void 0),no([v("valueFormatterService")],t.prototype,"valueFormatterService",void 0),no([v("columnModel")],t.prototype,"columnModel",void 0),no([v("userComponentFactory")],t.prototype,"userComponentFactory",void 0),no([v("ctrlsService")],t.prototype,"ctrlsService",void 0),t}(D),ch=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),so=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Ul=function(n){ch(t,n);function t(){return n.call(this,t.TEMPLATE)||this}return t.prototype.init=function(e){var r=this,o={setInnerRenderer:function(l,u){return r.setRenderDetails(l,u)},setChildCount:function(l){return r.eChildCount.textContent=l},addOrRemoveCssClass:function(l,u){return r.addOrRemoveCssClass(l,u)},setContractedDisplayed:function(l){return $(r.eContracted,l)},setExpandedDisplayed:function(l){return $(r.eExpanded,l)},setCheckboxVisible:function(l){return r.eCheckbox.classList.toggle("ag-invisible",!l)}},i=this.createManagedBean(new uh),s=!e.colDef,a=this.getGui();i.init(o,a,this.eCheckbox,this.eExpanded,this.eContracted,this.constructor,e),s&&le(a,i.getCellAriaRole())},t.prototype.setRenderDetails=function(e,r){var o=this;if(e){var i=e.newAgStackInstance();if(!i)return;i.then(function(s){if(s){var a=function(){return o.context.destroyBean(s)};o.isAlive()?(o.eValue.appendChild(s.getGui()),o.addDestroyFunc(a)):a()}})}else this.eValue.innerText=r},t.prototype.destroy=function(){this.getContext().destroyBean(this.innerCellRenderer),n.prototype.destroy.call(this)},t.prototype.refresh=function(){return!1},t.TEMPLATE=` + + + + + + `,so([L("eExpanded")],t.prototype,"eExpanded",void 0),so([L("eContracted")],t.prototype,"eContracted",void 0),so([L("eCheckbox")],t.prototype,"eCheckbox",void 0),so([L("eValue")],t.prototype,"eValue",void 0),so([L("eChildCount")],t.prototype,"eChildCount",void 0),t}(k),ph=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),zl=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},dh=function(n){ph(t,n);function t(){return n.call(this,t.TEMPLATE)||this}return t.prototype.init=function(e){e.node.failedLoad?this.setupFailed():this.setupLoading()},t.prototype.setupFailed=function(){var e=this.localeService.getLocaleTextFunc();this.eLoadingText.innerText=e("loadingError","ERR")},t.prototype.setupLoading=function(){var e=ne("groupLoading",this.gridOptionsService,null);e&&this.eLoadingIcon.appendChild(e);var r=this.localeService.getLocaleTextFunc();this.eLoadingText.innerText=r("loadingOoo","Loading")},t.prototype.refresh=function(e){return!1},t.prototype.destroy=function(){n.prototype.destroy.call(this)},t.TEMPLATE=`
+ + +
`,zl([L("eLoadingIcon")],t.prototype,"eLoadingIcon",void 0),zl([L("eLoadingText")],t.prototype,"eLoadingText",void 0),t}(k),hh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),fh=function(n){hh(t,n);function t(){return n.call(this)||this}return t.prototype.destroy=function(){n.prototype.destroy.call(this)},t.prototype.init=function(e){var r=this,o=this.gridOptionsService.get("overlayLoadingTemplate");if(this.setTemplate(o??t.DEFAULT_LOADING_OVERLAY_TEMPLATE),!o){var i=this.localeService.getLocaleTextFunc();setTimeout(function(){r.getGui().textContent=i("loadingOoo","Loading...")})}},t.DEFAULT_LOADING_OVERLAY_TEMPLATE='',t}(k),vh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),gh=function(n){vh(t,n);function t(){return n.call(this)||this}return t.prototype.destroy=function(){n.prototype.destroy.call(this)},t.prototype.init=function(e){var r=this,o=this.gridOptionsService.get("overlayNoRowsTemplate");if(this.setTemplate(o??t.DEFAULT_NO_ROWS_TEMPLATE),!o){var i=this.localeService.getLocaleTextFunc();setTimeout(function(){r.getGui().textContent=i("noRowsToShow","No Rows To Show")})}},t.DEFAULT_NO_ROWS_TEMPLATE='',t}(k),yh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),mh=function(n){yh(t,n);function t(){return n.call(this,'
')||this}return t.prototype.init=function(e){var r=e.value;this.getGui().textContent=ae(r,!0)},t}(cr),Ch=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Sh=function(){function n(){}return n.prototype.getTemplate=function(){return''},n.prototype.init=function(t,e){this.eInput=t,this.params=e,e.max!=null&&t.setMax(e.max),e.min!=null&&t.setMin(e.min),e.precision!=null&&t.setPrecision(e.precision),e.step!=null&&t.setStep(e.step);var r=t.getInputElement();e.preventStepping?t.addManagedListener(r,"keydown",this.preventStepping):e.showStepperButtons&&r.classList.add("ag-number-field-input-stepper")},n.prototype.preventStepping=function(t){(t.key===_.UP||t.key===_.DOWN)&&t.preventDefault()},n.prototype.getValue=function(){var t=this.eInput.getValue();if(!P(t)&&!P(this.params.value))return this.params.value;var e=this.params.parseValue(t);if(e==null)return e;if(typeof e=="string"){if(e==="")return null;e=Number(e)}return isNaN(e)?null:e},n.prototype.getStartValue=function(){return this.params.value},n}(),wh=function(n){Ch(t,n);function t(){return n.call(this,new Sh)||this}return t}(oi),Eh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),_h=function(){function n(){}return n.prototype.getTemplate=function(){return''},n.prototype.init=function(t,e){this.eInput=t,this.params=e,e.min!=null&&t.setMin(e.min),e.max!=null&&t.setMax(e.max),e.step!=null&&t.setStep(e.step)},n.prototype.getValue=function(){var t=this.eInput.getDate();return!P(t)&&!P(this.params.value)?this.params.value:t??null},n.prototype.getStartValue=function(){var t=this.params.value;if(t instanceof Date)return Xe(t,!1)},n}(),Rh=function(n){Eh(t,n);function t(){return n.call(this,new _h)||this}return t}(oi),Oh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Th=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Ph=function(){function n(t){this.getDataTypeService=t}return n.prototype.getTemplate=function(){return''},n.prototype.init=function(t,e){this.eInput=t,this.params=e,e.min!=null&&t.setMin(e.min),e.max!=null&&t.setMax(e.max),e.step!=null&&t.setStep(e.step)},n.prototype.getValue=function(){var t=this.formatDate(this.eInput.getDate());return!P(t)&&!P(this.params.value)?this.params.value:this.params.parseValue(t??"")},n.prototype.getStartValue=function(){var t,e;return Xe((e=this.parseDate((t=this.params.value)!==null&&t!==void 0?t:void 0))!==null&&e!==void 0?e:null,!1)},n.prototype.parseDate=function(t){return this.getDataTypeService().getDateParserFunction(this.params.column)(t)},n.prototype.formatDate=function(t){return this.getDataTypeService().getDateFormatterFunction(this.params.column)(t)},n}(),Dh=function(n){Oh(t,n);function t(){var e=n.call(this,new Ph(function(){return e.dataTypeService}))||this;return e}return Th([v("dataTypeService")],t.prototype,"dataTypeService",void 0),t}(oi),Ah=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),bh=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Fh=function(n){Ah(t,n);function t(){return n.call(this,t.TEMPLATE)||this}return t.prototype.init=function(e){var r=this;this.params=e,this.updateCheckbox(e);var o=this.eCheckbox.getInputElement();o.setAttribute("tabindex","-1"),dn(o,"polite"),this.addManagedListener(o,"click",function(s){if(it(s),!r.eCheckbox.isDisabled()){var a=r.eCheckbox.getValue();r.onCheckboxChanged(a)}}),this.addManagedListener(o,"dblclick",function(s){it(s)});var i=this.gridOptionsService.getDocument();this.addManagedListener(this.params.eGridCell,"keydown",function(s){if(s.key===_.SPACE&&!r.eCheckbox.isDisabled()){r.params.eGridCell===i.activeElement&&r.eCheckbox.toggle();var a=r.eCheckbox.getValue();r.onCheckboxChanged(a),s.preventDefault()}})},t.prototype.refresh=function(e){return this.params=e,this.updateCheckbox(e),!0},t.prototype.updateCheckbox=function(e){var r,o,i,s,a=!0;if(e.node.group&&e.column){var l=e.column.getColId();l.startsWith(Er)?s=e.value==null||e.value===""?void 0:e.value==="true":e.node.aggData&&e.node.aggData[l]!==void 0?s=(r=e.value)!==null&&r!==void 0?r:void 0:a=!1}else s=(o=e.value)!==null&&o!==void 0?o:void 0;if(!a){this.eCheckbox.setDisplayed(!1);return}this.eCheckbox.setValue(s);var u=e.disabled!=null?e.disabled:!(!((i=e.column)===null||i===void 0)&&i.isCellEditable(e.node));this.eCheckbox.setDisabled(u);var c=this.localeService.getLocaleTextFunc(),p=Sn(c,s),d=u?p:"".concat(c("ariaToggleCellValue","Press SPACE to toggle cell value")," (").concat(p,")");this.eCheckbox.setInputAriaLabel(d)},t.prototype.onCheckboxChanged=function(e){var r=this.params,o=r.column,i=r.node,s=r.rowIndex,a=r.value,l={type:g.EVENT_CELL_EDITING_STARTED,column:o,colDef:o==null?void 0:o.getColDef(),data:i.data,node:i,rowIndex:s,rowPinned:i.rowPinned,value:a};this.eventService.dispatchEvent(l);var u=this.params.node.setDataValue(this.params.column,e,"edit"),c={type:g.EVENT_CELL_EDITING_STOPPED,column:o,colDef:o==null?void 0:o.getColDef(),data:i.data,node:i,rowIndex:s,rowPinned:i.rowPinned,value:a,oldValue:a,newValue:e,valueChanged:u};this.eventService.dispatchEvent(c)},t.TEMPLATE=` + `,bh([L("eCheckbox")],t.prototype,"eCheckbox",void 0),t}(k),Lh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Mh=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Ih=function(n){Lh(t,n);function t(){return n.call(this,` +
+ +
`)||this}return t.prototype.init=function(e){var r=this,o;this.params=e;var i=(o=e.value)!==null&&o!==void 0?o:void 0;this.eCheckbox.setValue(i);var s=this.eCheckbox.getInputElement();s.setAttribute("tabindex","-1"),this.setAriaLabel(i),this.addManagedListener(this.eCheckbox,g.EVENT_FIELD_VALUE_CHANGED,function(a){return r.setAriaLabel(a.selected)})},t.prototype.getValue=function(){return this.eCheckbox.getValue()},t.prototype.focusIn=function(){this.eCheckbox.getFocusableElement().focus()},t.prototype.afterGuiAttached=function(){this.params.cellStartedEdit&&this.focusIn()},t.prototype.isPopup=function(){return!1},t.prototype.setAriaLabel=function(e){var r=this.localeService.getLocaleTextFunc(),o=Sn(r,e),i=r("ariaToggleCellValue","Press SPACE to toggle cell value");this.eCheckbox.setInputAriaLabel("".concat(i," (").concat(o,")"))},Mh([L("eCheckbox")],t.prototype,"eCheckbox",void 0),t}(cr),xh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Nh=function(n){xh(t,n);function t(){var e=n.call(this)||this;return e.setTemplate("
"),e}return t.prototype.init=function(e){var r;this.params=e,this.cssClassPrefix=(r=this.params.cssClassPrefix)!==null&&r!==void 0?r:"ag-menu-option",this.addIcon(),this.addName(),this.addShortcut(),this.addSubMenu()},t.prototype.configureDefaults=function(){return!0},t.prototype.addIcon=function(){if(!this.params.isCompact){var e=Re(''));this.params.checked?e.appendChild(ne("check",this.gridOptionsService)):this.params.icon&&(to(this.params.icon)?e.appendChild(this.params.icon):typeof this.params.icon=="string"?e.innerHTML=this.params.icon:console.warn("AG Grid: menu item icon must be DOM node or string")),this.getGui().appendChild(e)}},t.prototype.addName=function(){var e=Re('').concat(this.params.name||"",""));this.getGui().appendChild(e)},t.prototype.addShortcut=function(){if(!this.params.isCompact){var e=Re('').concat(this.params.shortcut||"",""));this.getGui().appendChild(e)}},t.prototype.addSubMenu=function(){var e=Re('')),r=this.getGui();if(this.params.subMenu){var o=this.gridOptionsService.get("enableRtl")?"smallLeft":"smallRight";Pt(r,!1),e.appendChild(ne(o,this.gridOptionsService))}r.appendChild(e)},t.prototype.getClassName=function(e){return"".concat(this.cssClassPrefix,"-").concat(e)},t.prototype.destroy=function(){n.prototype.destroy.call(this)},t}(k),Gh=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ds=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Kl=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},$l=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r0&&console.warn(" Did you mean: [".concat(i.slice(0,3),"]?")),console.warn("If using a custom component check it has been registered as described in: ".concat(this.getFrameworkOverrides().getDocLink("components/")))},ds([v("gridOptions")],t.prototype,"gridOptions",void 0),ds([F],t.prototype,"init",null),t=ds([x("userComponentRegistry")],t),t}(D),Hh={propertyName:"dateComponent",cellRenderer:!1},Bh={propertyName:"headerComponent",cellRenderer:!1},kh={propertyName:"headerGroupComponent",cellRenderer:!1},Yl={propertyName:"cellRenderer",cellRenderer:!0},Wh={propertyName:"cellEditor",cellRenderer:!1},ql={propertyName:"innerRenderer",cellRenderer:!0},jh={propertyName:"loadingOverlayComponent",cellRenderer:!1},Uh={propertyName:"noRowsOverlayComponent",cellRenderer:!1},zh={propertyName:"tooltipComponent",cellRenderer:!1},hs={propertyName:"filter",cellRenderer:!1},Kh={propertyName:"floatingFilterComponent",cellRenderer:!1},$h={propertyName:"toolPanel",cellRenderer:!1},Yh={propertyName:"statusPanel",cellRenderer:!1},qh={propertyName:"fullWidthCellRenderer",cellRenderer:!0},Qh={propertyName:"loadingCellRenderer",cellRenderer:!0},Xh={propertyName:"groupRowRenderer",cellRenderer:!0},Jh={propertyName:"detailCellRenderer",cellRenderer:!0},Zh={propertyName:"menuItem",cellRenderer:!1},ef=function(){function n(){}return n.getFloatingFilterType=function(t){return this.filterToFloatingFilterMapping[t]},n.filterToFloatingFilterMapping={set:"agSetColumnFloatingFilter",agSetColumnFilter:"agSetColumnFloatingFilter",multi:"agMultiColumnFloatingFilter",agMultiColumnFilter:"agMultiColumnFloatingFilter",group:"agGroupColumnFloatingFilter",agGroupColumnFilter:"agGroupColumnFloatingFilter",number:"agNumberColumnFloatingFilter",agNumberColumnFilter:"agNumberColumnFloatingFilter",date:"agDateColumnFloatingFilter",agDateColumnFilter:"agDateColumnFloatingFilter",text:"agTextColumnFloatingFilter",agTextColumnFilter:"agTextColumnFloatingFilter"},n}(),tf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Lr=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},rf=function(n){tf(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.getHeaderCompDetails=function(e,r){return this.getCompDetails(e,Bh,"agColumnHeader",r)},t.prototype.getHeaderGroupCompDetails=function(e){var r=e.columnGroup.getColGroupDef();return this.getCompDetails(r,kh,"agColumnGroupHeader",e)},t.prototype.getFullWidthCellRendererDetails=function(e){return this.getCompDetails(this.gridOptions,qh,null,e,!0)},t.prototype.getFullWidthLoadingCellRendererDetails=function(e){return this.getCompDetails(this.gridOptions,Qh,"agLoadingCellRenderer",e,!0)},t.prototype.getFullWidthGroupCellRendererDetails=function(e){return this.getCompDetails(this.gridOptions,Xh,"agGroupRowRenderer",e,!0)},t.prototype.getFullWidthDetailCellRendererDetails=function(e){return this.getCompDetails(this.gridOptions,Jh,"agDetailCellRenderer",e,!0)},t.prototype.getInnerRendererDetails=function(e,r){return this.getCompDetails(e,ql,null,r)},t.prototype.getFullWidthGroupRowInnerCellRenderer=function(e,r){return this.getCompDetails(e,ql,null,r)},t.prototype.getCellRendererDetails=function(e,r){return this.getCompDetails(e,Yl,null,r)},t.prototype.getCellEditorDetails=function(e,r){return this.getCompDetails(e,Wh,"agCellEditor",r,!0)},t.prototype.getFilterDetails=function(e,r,o){return this.getCompDetails(e,hs,o,r,!0)},t.prototype.getDateCompDetails=function(e){return this.getCompDetails(this.gridOptions,Hh,"agDateInput",e,!0)},t.prototype.getLoadingOverlayCompDetails=function(e){return this.getCompDetails(this.gridOptions,jh,"agLoadingOverlay",e,!0)},t.prototype.getNoRowsOverlayCompDetails=function(e){return this.getCompDetails(this.gridOptions,Uh,"agNoRowsOverlay",e,!0)},t.prototype.getTooltipCompDetails=function(e){return this.getCompDetails(e.colDef,zh,"agTooltipComponent",e,!0)},t.prototype.getSetFilterCellRendererDetails=function(e,r){return this.getCompDetails(e,Yl,null,r)},t.prototype.getFloatingFilterCompDetails=function(e,r,o){return this.getCompDetails(e,Kh,o,r)},t.prototype.getToolPanelCompDetails=function(e,r){return this.getCompDetails(e,$h,null,r,!0)},t.prototype.getStatusPanelCompDetails=function(e,r){return this.getCompDetails(e,Yh,null,r,!0)},t.prototype.getMenuItemCompDetails=function(e,r){return this.getCompDetails(e,Zh,"agMenuItem",r,!0)},t.prototype.getCompDetails=function(e,r,o,i,s){var a=this;s===void 0&&(s=!1);var l=r.propertyName,u=r.cellRenderer,c=this.getCompKeys(e,r,i),p=c.compName,d=c.jsComp,h=c.fwComp,f=c.paramsFromSelector,y=c.popupFromSelector,m=c.popupPositionFromSelector,C=function(R){var O=a.userComponentRegistry.retrieve(l,R);O&&(d=O.componentFromFramework?void 0:O.component,h=O.componentFromFramework?O.component:void 0)};if(p!=null&&C(p),d==null&&h==null&&o!=null&&C(o),d&&u&&!this.agComponentUtils.doesImplementIComponent(d)&&(d=this.agComponentUtils.adaptFunction(l,d)),!d&&!h){s&&console.error("AG Grid: Could not find component ".concat(p,", did you forget to configure this component?"));return}var w=this.mergeParamsWithApplicationProvidedParams(e,r,i,f),E=d==null,S=d||h;return{componentFromFramework:E,componentClass:S,params:w,type:r,popupFromSelector:y,popupPositionFromSelector:m,newAgStackInstance:function(){return a.newAgStackInstance(S,E,w,r)}}},t.prototype.getCompKeys=function(e,r,o){var i=this,s=r.propertyName,a,l,u,c,p,d;if(e){var h=e,f=h[s+"Selector"],y=f?f(o):null,m=function(C){if(typeof C=="string")a=C;else if(C!=null&&C!==!0){var w=i.getFrameworkOverrides().isFrameworkComponent(C);w?u=C:l=C}};y?(m(y.component),c=y.params,p=y.popup,d=y.popupPosition):m(h[s])}return{compName:a,jsComp:l,fwComp:u,paramsFromSelector:c,popupFromSelector:p,popupPositionFromSelector:d}},t.prototype.newAgStackInstance=function(e,r,o,i){var s=i.propertyName,a=!r,l;if(a)l=new e;else{var u=this.componentMetadataProvider.retrieve(s);l=this.frameworkComponentWrapper.wrap(e,u.mandatoryMethodList,u.optionalMethodList,i)}var c=this.initComponent(l,o);return c==null?je.resolve(l):c.then(function(){return l})},t.prototype.mergeParamsWithApplicationProvidedParams=function(e,r,o,i){i===void 0&&(i=null);var s=this.gridOptionsService.getGridCommonParams();Ve(s,o);var a=e,l=a&&a[r.propertyName+"Params"];if(typeof l=="function"){var u=l(o);Ve(s,u)}else typeof l=="object"&&Ve(s,l);return Ve(s,i),s},t.prototype.initComponent=function(e,r){if(this.context.createBean(e),e.init!=null)return e.init(r)},t.prototype.getDefaultFloatingFilterType=function(e,r){if(e==null)return null;var o=null,i=this.getCompKeys(e,hs),s=i.compName,a=i.jsComp,l=i.fwComp;if(s)o=ef.getFloatingFilterType(s);else{var u=a==null&&l==null&&e.filter===!0;u&&(o=r())}return o},Lr([v("gridOptions")],t.prototype,"gridOptions",void 0),Lr([v("agComponentUtils")],t.prototype,"agComponentUtils",void 0),Lr([v("componentMetadataProvider")],t.prototype,"componentMetadataProvider",void 0),Lr([v("userComponentRegistry")],t.prototype,"userComponentRegistry",void 0),Lr([Y("frameworkComponentWrapper")],t.prototype,"frameworkComponentWrapper",void 0),t=Lr([x("userComponentFactory")],t),t}(D),of=function(){function n(){}return n.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,cellDataType: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,cellAriaRole:void 0,cellEditorPopupPosition:void 0,headerGroupComponent:void 0,headerGroupComponentParams:void 0,cellStyle:void 0,cellRenderer:void 0,cellRendererParams:void 0,cellEditor:void 0,cellEditorParams:void 0,filterParams:void 0,pivotValueColumn:void 0,headerComponent:void 0,headerComponentParams:void 0,floatingFilterComponent:void 0,floatingFilterComponentParams:void 0,tooltipComponentParams:void 0,refData:void 0,columnsMenuParams:void 0,columnChooserParams: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,suppressStickyLabel: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,headerCheckboxSelectionCurrentPageOnly:void 0,suppressMenu:void 0,suppressHeaderMenuButton: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,suppressSpanHeaderHeight:void 0,useValueFormatterForExport:void 0,useValueParserForImport:void 0,mainMenuItems:void 0,contextMenuItems:void 0,suppressFloatingFilterButton:void 0,suppressHeaderFilterButton:void 0,suppressHeaderContextMenu:void 0},n.ALL_PROPERTIES=Object.keys(n.ColDefPropertyMap),n}(),ui;(function(n){n[n.SINGLE_SHEET=0]="SINGLE_SHEET",n[n.MULTI_SHEET=1]="MULTI_SHEET"})(ui||(ui={}));var nf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),fs=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},sf=function(n){nf(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.dragEndFunctions=[],e.dragSources=[],e}return t.prototype.removeAllListeners=function(){this.dragSources.forEach(this.removeListener.bind(this)),this.dragSources.length=0},t.prototype.removeListener=function(e){var r=e.dragSource.eElement,o=e.mouseDownListener;if(r.removeEventListener("mousedown",o),e.touchEnabled){var i=e.touchStartListener;r.removeEventListener("touchstart",i,{passive:!0})}},t.prototype.removeDragSource=function(e){var r=this.dragSources.find(function(o){return o.dragSource===e});r&&(this.removeListener(r),Ee(this.dragSources,r))},t.prototype.isDragging=function(){return this.dragging},t.prototype.addDragSource=function(e){var r=this,o=this.onMouseDown.bind(this,e),i=e.eElement,s=e.includeTouch,a=e.stopPropagationForTouch;i.addEventListener("mousedown",o);var l=null,u=this.gridOptionsService.get("suppressTouch");s&&!u&&(l=function(c){Vn(c.target)||(c.cancelable&&(c.preventDefault(),a&&c.stopPropagation()),r.onTouchStart(e,c))},i.addEventListener("touchstart",l,{passive:!1})),this.dragSources.push({dragSource:e,mouseDownListener:o,touchStartListener:l,touchEnabled:!!s})},t.prototype.getStartTarget=function(){return this.startTarget},t.prototype.onTouchStart=function(e,r){var o=this;this.currentDragParams=e,this.dragging=!1;var i=r.touches[0];this.touchLastTime=i,this.touchStart=i;var s=function(p){return o.onTouchMove(p,e.eElement)},a=function(p){return o.onTouchUp(p,e.eElement)},l=function(p){p.cancelable&&p.preventDefault()},u=r.target,c=[{target:this.gridOptionsService.getRootNode(),type:"touchmove",listener:l,options:{passive:!1}},{target:u,type:"touchmove",listener:s,options:{passive:!0}},{target:u,type:"touchend",listener:a,options:{passive:!0}},{target:u,type:"touchcancel",listener:a,options:{passive:!0}}];this.addTemporaryEvents(c),e.dragStartPixels===0&&this.onCommonMove(i,this.touchStart,e.eElement)},t.prototype.onMouseDown=function(e,r){var o=this,i=r;if(!(e.skipMouseEvent&&e.skipMouseEvent(r))&&!i._alreadyProcessedByDragService&&(i._alreadyProcessedByDragService=!0,r.button===0)){this.shouldPreventMouseEvent(r)&&r.preventDefault(),this.currentDragParams=e,this.dragging=!1,this.mouseStartEvent=r,this.startTarget=r.target;var s=function(p){return o.onMouseMove(p,e.eElement)},a=function(p){return o.onMouseUp(p,e.eElement)},l=function(p){return p.preventDefault()},u=this.gridOptionsService.getRootNode(),c=[{target:u,type:"mousemove",listener:s},{target:u,type:"mouseup",listener:a},{target:u,type:"contextmenu",listener:l}];this.addTemporaryEvents(c),e.dragStartPixels===0&&this.onMouseMove(r,e.eElement)}},t.prototype.addTemporaryEvents=function(e){e.forEach(function(r){var o=r.target,i=r.type,s=r.listener,a=r.options;o.addEventListener(i,s,a)}),this.dragEndFunctions.push(function(){e.forEach(function(r){var o=r.target,i=r.type,s=r.listener,a=r.options;o.removeEventListener(i,s,a)})})},t.prototype.isEventNearStartEvent=function(e,r){var o=this.currentDragParams.dragStartPixels,i=P(o)?o:4;return $n(e,r,i)},t.prototype.getFirstActiveTouch=function(e){for(var r=0;ro.right-i,this.tickUp=t.clientYo.bottom-i&&!r,this.tickLeft||this.tickRight||this.tickUp||this.tickDown?this.ensureTickingStarted():this.ensureCleared()}},n.prototype.ensureTickingStarted=function(){this.tickingInterval===null&&(this.tickingInterval=window.setInterval(this.doTick.bind(this),100),this.tickCount=0)},n.prototype.doTick=function(){this.tickCount++;var t;if(t=this.tickCount>20?200:this.tickCount>10?80:40,this.scrollVertically){var e=this.getVerticalPosition();this.tickUp&&this.setVerticalPosition(e-t),this.tickDown&&this.setVerticalPosition(e+t)}if(this.scrollHorizontally){var r=this.getHorizontalPosition();this.tickLeft&&this.setHorizontalPosition(r-t),this.tickRight&&this.setHorizontalPosition(r+t)}this.onScrollCallback&&this.onScrollCallback()},n.prototype.ensureCleared=function(){this.tickingInterval&&(window.clearInterval(this.tickingInterval),this.tickingInterval=null)},n}(),af=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Xl=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},vs="ag-list-item-hovered";(function(n){af(t,n);function t(e,r,o){var i=n.call(this)||this;return i.comp=e,i.virtualList=r,i.params=o,i.currentDragValue=null,i.lastHoveredListItem=null,i}return t.prototype.postConstruct=function(){this.addManagedListener(this.params.eventSource,this.params.listItemDragStartEvent,this.listItemDragStart.bind(this)),this.addManagedListener(this.params.eventSource,this.params.listItemDragEndEvent,this.listItemDragEnd.bind(this)),this.createDropTarget(),this.createAutoScrollService()},t.prototype.listItemDragStart=function(e){this.currentDragValue=this.params.getCurrentDragValue(e),this.moveBlocked=this.params.isMoveBlocked(this.currentDragValue)},t.prototype.listItemDragEnd=function(){var e=this;window.setTimeout(function(){e.currentDragValue=null,e.moveBlocked=!1},10)},t.prototype.createDropTarget=function(){var e=this,r={isInterestedIn:function(o){return o===e.params.dragSourceType},getIconName:function(){return e.moveBlocked?he.ICON_PINNED:he.ICON_MOVE},getContainer:function(){return e.comp.getGui()},onDragging:function(o){return e.onDragging(o)},onDragStop:function(){return e.onDragStop()},onDragLeave:function(){return e.onDragLeave()}};this.dragAndDropService.addDropTarget(r)},t.prototype.createAutoScrollService=function(){var e=this.virtualList.getGui();this.autoScrollService=new Ql({scrollContainer:e,scrollAxis:"y",getVerticalPosition:function(){return e.scrollTop},setVerticalPosition:function(r){return e.scrollTop=r}})},t.prototype.onDragging=function(e){if(!(!this.currentDragValue||this.moveBlocked)){var r=this.getListDragItem(e),o=this.virtualList.getComponentAt(r.rowIndex);if(o){var i=o.getGui().parentElement;this.lastHoveredListItem&&this.lastHoveredListItem.rowIndex===r.rowIndex&&this.lastHoveredListItem.position===r.position||(this.autoScrollService.check(e.event),this.clearHoveredItems(),this.lastHoveredListItem=r,Nn(i,vs),Nn(i,"ag-item-highlight-".concat(r.position)))}}},t.prototype.getListDragItem=function(e){var r=this.virtualList.getGui(),o=parseFloat(window.getComputedStyle(r).paddingTop),i=this.virtualList.getRowHeight(),s=this.virtualList.getScrollTop(),a=Math.max(0,(e.y-o+s)/i),l=this.params.getNumRows(this.comp)-1,u=Math.min(l,a)|0;return{rowIndex:u,position:Math.round(a)>a||a>l?"bottom":"top",component:this.virtualList.getComponentAt(u)}},t.prototype.onDragStop=function(){this.moveBlocked||(this.params.moveItem(this.currentDragValue,this.lastHoveredListItem),this.clearHoveredItems(),this.autoScrollService.ensureCleared())},t.prototype.onDragLeave=function(){this.clearHoveredItems(),this.autoScrollService.ensureCleared()},t.prototype.clearHoveredItems=function(){var e=this.virtualList.getGui();e.querySelectorAll(".".concat(vs)).forEach(function(r){[vs,"ag-item-highlight-top","ag-item-highlight-bottom"].forEach(function(o){r.classList.remove(o)})}),this.lastHoveredListItem=null},Xl([v("dragAndDropService")],t.prototype,"dragAndDropService",void 0),Xl([F],t.prototype,"postConstruct",null),t})(D);var et;(function(n){n[n.Above=0]="Above",n[n.Below=1]="Below"})(et||(et={}));var K=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i};function dr(n){var t=n,e=t!=null&&t.getFrameworkComponentInstance!=null;return e?t.getFrameworkComponentInstance():n}var Jl=function(){function n(){this.detailGridInfoMap={},this.destroyCalled=!1}return n.prototype.init=function(){var t=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(){t.gridBodyCtrl=t.ctrlsService.getGridBodyCtrl()})},n.prototype.__getAlignedGridService=function(){return this.alignedGridsService},n.prototype.__getContext=function(){return this.context},n.prototype.__getModel=function(){return this.rowModel},n.prototype.getGridId=function(){return this.context.getGridId()},n.prototype.addDetailGridInfo=function(t,e){this.detailGridInfoMap[t]=e},n.prototype.removeDetailGridInfo=function(t){this.detailGridInfoMap[t]=void 0},n.prototype.getDetailGridInfo=function(t){return this.detailGridInfoMap[t]},n.prototype.forEachDetailGridInfo=function(t){var e=0;ye(this.detailGridInfoMap,function(r,o){P(o)&&(t(o,e),e++)})},n.prototype.getDataAsCsv=function(t){if(X.__assertRegistered(G.CsvExportModule,"api.getDataAsCsv",this.context.getGridId()))return this.csvCreator.getDataAsCsv(t)},n.prototype.exportDataAsCsv=function(t){X.__assertRegistered(G.CsvExportModule,"api.exportDataAsCSv",this.context.getGridId())&&this.csvCreator.exportDataAsCsv(t)},n.prototype.assertNotExcelMultiSheet=function(t,e){return X.__assertRegistered(G.ExcelExportModule,"api."+t,this.context.getGridId())?this.excelCreator.getFactoryMode()===ui.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()'"),!1):!0:!1},n.prototype.getDataAsExcel=function(t){if(this.assertNotExcelMultiSheet("getDataAsExcel",t))return this.excelCreator.getDataAsExcel(t)},n.prototype.exportDataAsExcel=function(t){this.assertNotExcelMultiSheet("exportDataAsExcel",t)&&this.excelCreator.exportDataAsExcel(t)},n.prototype.getSheetDataForExcel=function(t){if(X.__assertRegistered(G.ExcelExportModule,"api.getSheetDataForExcel",this.context.getGridId()))return this.excelCreator.setFactoryMode(ui.MULTI_SHEET),this.excelCreator.getSheetDataForExcel(t)},n.prototype.getMultipleSheetsAsExcel=function(t){if(X.__assertRegistered(G.ExcelExportModule,"api.getMultipleSheetsAsExcel",this.context.getGridId()))return this.excelCreator.getMultipleSheetsAsExcel(t)},n.prototype.exportMultipleSheetsAsExcel=function(t){X.__assertRegistered(G.ExcelExportModule,"api.exportMultipleSheetsAsExcel",this.context.getGridId())&&this.excelCreator.exportMultipleSheetsAsExcel(t)},n.prototype.setGridAriaProperty=function(t,e){if(t){var r=this.ctrlsService.getGridBodyCtrl().getGui(),o="aria-".concat(t);e===null?r.removeAttribute(o):r.setAttribute(o,e)}},n.prototype.logMissingRowModel=function(t){for(var e=[],r=1;r= 0"));return}this.serverSideRowModel?this.serverSideRowModel.applyRowData(t.successParams,o,i):this.logMissingRowModel("setServerSideDatasource","serverSide")},n.prototype.retryServerSideLoads=function(){if(!this.serverSideRowModel){this.logMissingRowModel("retryServerSideLoads","serverSide");return}this.serverSideRowModel.retryLoads()},n.prototype.flushServerSideAsyncTransactions=function(){if(!this.serverSideTransactionManager){this.logMissingRowModel("flushServerSideAsyncTransactions","serverSide");return}return this.serverSideTransactionManager.flushAsyncTransactions()},n.prototype.applyTransaction=function(t){var e=this;if(!this.clientSideRowModel){this.logMissingRowModel("applyTransaction","clientSide");return}return this.frameworkOverrides.wrapIncoming(function(){return e.clientSideRowModel.updateRowData(t)})},n.prototype.applyTransactionAsync=function(t,e){var r=this;if(!this.clientSideRowModel){this.logMissingRowModel("applyTransactionAsync","clientSide");return}this.frameworkOverrides.wrapIncoming(function(){return r.clientSideRowModel.batchUpdateRowData(t,e)})},n.prototype.flushAsyncTransactions=function(){var t=this;if(!this.clientSideRowModel){this.logMissingRowModel("flushAsyncTransactions","clientSide");return}this.frameworkOverrides.wrapIncoming(function(){return t.clientSideRowModel.flushAsyncTransactions()})},n.prototype.refreshInfiniteCache=function(){this.infiniteRowModel?this.infiniteRowModel.refreshCache():this.logMissingRowModel("refreshInfiniteCache","infinite")},n.prototype.purgeInfiniteCache=function(){this.infiniteRowModel?this.infiniteRowModel.purgeCache():this.logMissingRowModel("purgeInfiniteCache","infinite")},n.prototype.refreshServerSide=function(t){if(!this.serverSideRowModel){this.logMissingRowModel("refreshServerSide","serverSide");return}this.serverSideRowModel.refreshStore(t)},n.prototype.getServerSideGroupLevelState=function(){return this.serverSideRowModel?this.serverSideRowModel.getStoreState():(this.logMissingRowModel("getServerSideGroupLevelState","serverSide"),[])},n.prototype.getInfiniteRowCount=function(){if(this.infiniteRowModel)return this.infiniteRowModel.getRowCount();this.logMissingRowModel("getInfiniteRowCount","infinite")},n.prototype.isLastRowIndexKnown=function(){if(this.infiniteRowModel)return this.infiniteRowModel.isLastRowIndexKnown();this.logMissingRowModel("isLastRowIndexKnown","infinite")},n.prototype.getCacheBlockState=function(){return this.rowNodeBlockLoader.getBlockState()},n.prototype.getFirstDisplayedRow=function(){return this.logDeprecation("v31.1","getFirstDisplayedRow","getFirstDisplayedRowIndex"),this.getFirstDisplayedRowIndex()},n.prototype.getFirstDisplayedRowIndex=function(){return this.rowRenderer.getFirstVirtualRenderedRow()},n.prototype.getLastDisplayedRow=function(){return this.logDeprecation("v31.1","getLastDisplayedRow","getLastDisplayedRowIndex"),this.getLastDisplayedRowIndex()},n.prototype.getLastDisplayedRowIndex=function(){return this.rowRenderer.getLastVirtualRenderedRow()},n.prototype.getDisplayedRowAtIndex=function(t){return this.rowModel.getRow(t)},n.prototype.getDisplayedRowCount=function(){return this.rowModel.getRowCount()},n.prototype.paginationIsLastPageFound=function(){return this.paginationProxy.isLastPageFound()},n.prototype.paginationGetPageSize=function(){return this.paginationProxy.getPageSize()},n.prototype.paginationGetCurrentPage=function(){return this.paginationProxy.getCurrentPage()},n.prototype.paginationGetTotalPages=function(){return this.paginationProxy.getTotalPages()},n.prototype.paginationGetRowCount=function(){return this.paginationProxy.getMasterRowCount()},n.prototype.paginationGoToNextPage=function(){this.paginationProxy.goToNextPage()},n.prototype.paginationGoToPreviousPage=function(){this.paginationProxy.goToPreviousPage()},n.prototype.paginationGoToFirstPage=function(){this.paginationProxy.goToFirstPage()},n.prototype.paginationGoToLastPage=function(){this.paginationProxy.goToLastPage()},n.prototype.paginationGoToPage=function(t){this.paginationProxy.goToPage(t)},n.prototype.sizeColumnsToFit=function(t){typeof t=="number"?this.columnModel.sizeColumnsToFit(t,"api"):this.gridBodyCtrl.sizeColumnsToFit(t)},n.prototype.setColumnGroupOpened=function(t,e){this.columnModel.setColumnGroupOpened(t,e,"api")},n.prototype.getColumnGroup=function(t,e){return this.columnModel.getColumnGroup(t,e)},n.prototype.getProvidedColumnGroup=function(t){return this.columnModel.getProvidedColumnGroup(t)},n.prototype.getDisplayNameForColumn=function(t,e){return this.columnModel.getDisplayNameForColumn(t,e)||""},n.prototype.getDisplayNameForColumnGroup=function(t,e){return this.columnModel.getDisplayNameForColumnGroup(t,e)||""},n.prototype.getColumn=function(t){return this.columnModel.getPrimaryColumn(t)},n.prototype.getColumns=function(){return this.columnModel.getAllPrimaryColumns()},n.prototype.applyColumnState=function(t){return this.columnModel.applyColumnState(t,"api")},n.prototype.getColumnState=function(){return this.columnModel.getColumnState()},n.prototype.resetColumnState=function(){this.columnModel.resetColumnState("api")},n.prototype.getColumnGroupState=function(){return this.columnModel.getColumnGroupState()},n.prototype.setColumnGroupState=function(t){this.columnModel.setColumnGroupState(t,"api")},n.prototype.resetColumnGroupState=function(){this.columnModel.resetColumnGroupState("api")},n.prototype.isPinning=function(){return this.columnModel.isPinningLeft()||this.columnModel.isPinningRight()},n.prototype.isPinningLeft=function(){return this.columnModel.isPinningLeft()},n.prototype.isPinningRight=function(){return this.columnModel.isPinningRight()},n.prototype.getDisplayedColAfter=function(t){return this.columnModel.getDisplayedColAfter(t)},n.prototype.getDisplayedColBefore=function(t){return this.columnModel.getDisplayedColBefore(t)},n.prototype.setColumnVisible=function(t,e){this.logDeprecation("v31.1","setColumnVisible(key,visible)","setColumnsVisible([key],visible)"),this.columnModel.setColumnsVisible([t],e,"api")},n.prototype.setColumnsVisible=function(t,e){this.columnModel.setColumnsVisible(t,e,"api")},n.prototype.setColumnPinned=function(t,e){this.logDeprecation("v31.1","setColumnPinned(key,pinned)","setColumnsPinned([key],pinned)"),this.columnModel.setColumnsPinned([t],e,"api")},n.prototype.setColumnsPinned=function(t,e){this.columnModel.setColumnsPinned(t,e,"api")},n.prototype.getAllGridColumns=function(){return this.columnModel.getAllGridColumns()},n.prototype.getDisplayedLeftColumns=function(){return this.columnModel.getDisplayedLeftColumns()},n.prototype.getDisplayedCenterColumns=function(){return this.columnModel.getDisplayedCenterColumns()},n.prototype.getDisplayedRightColumns=function(){return this.columnModel.getDisplayedRightColumns()},n.prototype.getAllDisplayedColumns=function(){return this.columnModel.getAllDisplayedColumns()},n.prototype.getAllDisplayedVirtualColumns=function(){return this.columnModel.getViewportColumns()},n.prototype.moveColumn=function(t,e){this.logDeprecation("v31.1","moveColumn(key, toIndex)","moveColumns([key], toIndex)"),this.columnModel.moveColumns([t],e,"api")},n.prototype.moveColumnByIndex=function(t,e){this.columnModel.moveColumnByIndex(t,e,"api")},n.prototype.moveColumns=function(t,e){this.columnModel.moveColumns(t,e,"api")},n.prototype.moveRowGroupColumn=function(t,e){this.columnModel.moveRowGroupColumn(t,e,"api")},n.prototype.setColumnAggFunc=function(t,e){this.columnModel.setColumnAggFunc(t,e,"api")},n.prototype.setColumnWidth=function(t,e,r,o){r===void 0&&(r=!0),o===void 0&&(o="api"),this.logDeprecation("v31.1","setColumnWidth(col, width)","setColumnWidths([{key: col, newWidth: width}])"),this.columnModel.setColumnWidths([{key:t,newWidth:e}],!1,r,o)},n.prototype.setColumnWidths=function(t,e,r){e===void 0&&(e=!0),r===void 0&&(r="api"),this.columnModel.setColumnWidths(t,!1,e,r)},n.prototype.isPivotMode=function(){return this.columnModel.isPivotMode()},n.prototype.getPivotResultColumn=function(t,e){return this.columnModel.getSecondaryPivotColumn(t,e)},n.prototype.setValueColumns=function(t){this.columnModel.setValueColumns(t,"api")},n.prototype.getValueColumns=function(){return this.columnModel.getValueColumns()},n.prototype.removeValueColumn=function(t){this.logDeprecation("v31.1","removeValueColumn(colKey)","removeValueColumns([colKey])"),this.columnModel.removeValueColumns([t],"api")},n.prototype.removeValueColumns=function(t){this.columnModel.removeValueColumns(t,"api")},n.prototype.addValueColumn=function(t){this.logDeprecation("v31.1","addValueColumn(colKey)","addValueColumns([colKey])"),this.columnModel.addValueColumns([t],"api")},n.prototype.addValueColumns=function(t){this.columnModel.addValueColumns(t,"api")},n.prototype.setRowGroupColumns=function(t){this.columnModel.setRowGroupColumns(t,"api")},n.prototype.removeRowGroupColumn=function(t){this.logDeprecation("v31.1","removeRowGroupColumn(colKey)","removeRowGroupColumns([colKey])"),this.columnModel.removeRowGroupColumns([t],"api")},n.prototype.removeRowGroupColumns=function(t){this.columnModel.removeRowGroupColumns(t,"api")},n.prototype.addRowGroupColumn=function(t){this.logDeprecation("v31.1","addRowGroupColumn(colKey)","addRowGroupColumns([colKey])"),this.columnModel.addRowGroupColumns([t],"api")},n.prototype.addRowGroupColumns=function(t){this.columnModel.addRowGroupColumns(t,"api")},n.prototype.getRowGroupColumns=function(){return this.columnModel.getRowGroupColumns()},n.prototype.setPivotColumns=function(t){this.columnModel.setPivotColumns(t,"api")},n.prototype.removePivotColumn=function(t){this.logDeprecation("v31.1","removePivotColumn(colKey)","removePivotColumns([colKey])"),this.columnModel.removePivotColumns([t],"api")},n.prototype.removePivotColumns=function(t){this.columnModel.removePivotColumns(t,"api")},n.prototype.addPivotColumn=function(t){this.logDeprecation("v31.1","addPivotColumn(colKey)","addPivotColumns([colKey])"),this.columnModel.addPivotColumns([t],"api")},n.prototype.addPivotColumns=function(t){this.columnModel.addPivotColumns(t,"api")},n.prototype.getPivotColumns=function(){return this.columnModel.getPivotColumns()},n.prototype.getLeftDisplayedColumnGroups=function(){return this.columnModel.getDisplayedTreeLeft()},n.prototype.getCenterDisplayedColumnGroups=function(){return this.columnModel.getDisplayedTreeCentre()},n.prototype.getRightDisplayedColumnGroups=function(){return this.columnModel.getDisplayedTreeRight()},n.prototype.getAllDisplayedColumnGroups=function(){return this.columnModel.getAllDisplayedTrees()},n.prototype.autoSizeColumn=function(t,e){return this.logDeprecation("v31.1","autoSizeColumn(key, skipHeader)","autoSizeColumns([key], skipHeader)"),this.columnModel.autoSizeColumns({columns:[t],skipHeader:e,source:"api"})},n.prototype.autoSizeColumns=function(t,e){this.columnModel.autoSizeColumns({columns:t,skipHeader:e,source:"api"})},n.prototype.autoSizeAllColumns=function(t){this.columnModel.autoSizeAllColumns("api",t)},n.prototype.setPivotResultColumns=function(t){this.columnModel.setSecondaryColumns(t,"api")},n.prototype.getPivotResultColumns=function(){return this.columnModel.getSecondaryColumns()},n.prototype.getState=function(){return this.stateService.getState()},n.prototype.getGridOption=function(t){return this.gos.get(t)},n.prototype.setGridOption=function(t,e){var r;this.updateGridOptions((r={},r[t]=e,r))},n.prototype.updateGridOptions=function(t){this.gos.updateGridOptions({options:t})},n.prototype.__internalUpdateGridOptions=function(t){this.gos.updateGridOptions({options:t,source:"gridOptionsUpdated"})},n.prototype.deprecatedUpdateGridOption=function(t,e){V("set".concat(t.charAt(0).toUpperCase()).concat(t.slice(1,t.length)," is deprecated. Please use 'api.setGridOption('").concat(t,"', newValue)' or 'api.updateGridOptions({ ").concat(t,": newValue })' instead.")),this.setGridOption(t,e)},n.prototype.setPivotMode=function(t){this.deprecatedUpdateGridOption("pivotMode",t)},n.prototype.setPinnedTopRowData=function(t){this.deprecatedUpdateGridOption("pinnedTopRowData",t)},n.prototype.setPinnedBottomRowData=function(t){this.deprecatedUpdateGridOption("pinnedBottomRowData",t)},n.prototype.setPopupParent=function(t){this.deprecatedUpdateGridOption("popupParent",t)},n.prototype.setSuppressModelUpdateAfterUpdateTransaction=function(t){this.deprecatedUpdateGridOption("suppressModelUpdateAfterUpdateTransaction",t)},n.prototype.setDataTypeDefinitions=function(t){this.deprecatedUpdateGridOption("dataTypeDefinitions",t)},n.prototype.setPagination=function(t){this.deprecatedUpdateGridOption("pagination",t)},n.prototype.paginationSetPageSize=function(t){this.deprecatedUpdateGridOption("paginationPageSize",t)},n.prototype.setSideBar=function(t){this.deprecatedUpdateGridOption("sideBar",t)},n.prototype.setSuppressClipboardPaste=function(t){this.deprecatedUpdateGridOption("suppressClipboardPaste",t)},n.prototype.setGroupRemoveSingleChildren=function(t){this.deprecatedUpdateGridOption("groupRemoveSingleChildren",t)},n.prototype.setGroupRemoveLowestSingleChildren=function(t){this.deprecatedUpdateGridOption("groupRemoveLowestSingleChildren",t)},n.prototype.setGroupDisplayType=function(t){this.deprecatedUpdateGridOption("groupDisplayType",t)},n.prototype.setGroupIncludeFooter=function(t){this.deprecatedUpdateGridOption("groupIncludeFooter",t)},n.prototype.setGroupIncludeTotalFooter=function(t){this.deprecatedUpdateGridOption("groupIncludeTotalFooter",t)},n.prototype.setRowClass=function(t){this.deprecatedUpdateGridOption("rowClass",t)},n.prototype.setDeltaSort=function(t){this.deprecatedUpdateGridOption("deltaSort",t)},n.prototype.setSuppressRowDrag=function(t){this.deprecatedUpdateGridOption("suppressRowDrag",t)},n.prototype.setSuppressMoveWhenRowDragging=function(t){this.deprecatedUpdateGridOption("suppressMoveWhenRowDragging",t)},n.prototype.setSuppressRowClickSelection=function(t){this.deprecatedUpdateGridOption("suppressRowClickSelection",t)},n.prototype.setEnableAdvancedFilter=function(t){this.deprecatedUpdateGridOption("enableAdvancedFilter",t)},n.prototype.setIncludeHiddenColumnsInAdvancedFilter=function(t){this.deprecatedUpdateGridOption("includeHiddenColumnsInAdvancedFilter",t)},n.prototype.setAdvancedFilterParent=function(t){this.deprecatedUpdateGridOption("advancedFilterParent",t)},n.prototype.setAdvancedFilterBuilderParams=function(t){this.deprecatedUpdateGridOption("advancedFilterBuilderParams",t)},n.prototype.setQuickFilter=function(t){V("setQuickFilter is deprecated. Please use 'api.setGridOption('quickFilterText', newValue)' or 'api.updateGridOptions({ quickFilterText: newValue })' instead."),this.gos.updateGridOptions({options:{quickFilterText:t}})},n.prototype.setExcludeHiddenColumnsFromQuickFilter=function(t){this.deprecatedUpdateGridOption("includeHiddenColumnsInQuickFilter",!t)},n.prototype.setIncludeHiddenColumnsInQuickFilter=function(t){this.deprecatedUpdateGridOption("includeHiddenColumnsInQuickFilter",t)},n.prototype.setQuickFilterParser=function(t){this.deprecatedUpdateGridOption("quickFilterParser",t)},n.prototype.setQuickFilterMatcher=function(t){this.deprecatedUpdateGridOption("quickFilterMatcher",t)},n.prototype.setAlwaysShowHorizontalScroll=function(t){this.deprecatedUpdateGridOption("alwaysShowHorizontalScroll",t)},n.prototype.setAlwaysShowVerticalScroll=function(t){this.deprecatedUpdateGridOption("alwaysShowVerticalScroll",t)},n.prototype.setFunctionsReadOnly=function(t){this.deprecatedUpdateGridOption("functionsReadOnly",t)},n.prototype.setColumnDefs=function(t,e){e===void 0&&(e="api"),V("setColumnDefs is deprecated. Please use 'api.setGridOption('columnDefs', newValue)' or 'api.updateGridOptions({ columnDefs: newValue })' instead."),this.gos.updateGridOptions({options:{columnDefs:t},source:e})},n.prototype.setAutoGroupColumnDef=function(t,e){e===void 0&&(e="api"),V("setAutoGroupColumnDef is deprecated. Please use 'api.setGridOption('autoGroupColumnDef', newValue)' or 'api.updateGridOptions({ autoGroupColumnDef: newValue })' instead."),this.gos.updateGridOptions({options:{autoGroupColumnDef:t},source:e})},n.prototype.setDefaultColDef=function(t,e){e===void 0&&(e="api"),V("setDefaultColDef is deprecated. Please use 'api.setGridOption('defaultColDef', newValue)' or 'api.updateGridOptions({ defaultColDef: newValue })' instead."),this.gos.updateGridOptions({options:{defaultColDef:t},source:e})},n.prototype.setColumnTypes=function(t,e){e===void 0&&(e="api"),V("setColumnTypes is deprecated. Please use 'api.setGridOption('columnTypes', newValue)' or 'api.updateGridOptions({ columnTypes: newValue })' instead."),this.gos.updateGridOptions({options:{columnTypes:t},source:e})},n.prototype.setTreeData=function(t){this.deprecatedUpdateGridOption("treeData",t)},n.prototype.setServerSideDatasource=function(t){this.deprecatedUpdateGridOption("serverSideDatasource",t)},n.prototype.setCacheBlockSize=function(t){this.deprecatedUpdateGridOption("cacheBlockSize",t)},n.prototype.setDatasource=function(t){this.deprecatedUpdateGridOption("datasource",t)},n.prototype.setViewportDatasource=function(t){this.deprecatedUpdateGridOption("viewportDatasource",t)},n.prototype.setRowData=function(t){this.deprecatedUpdateGridOption("rowData",t)},n.prototype.setEnableCellTextSelection=function(t){this.deprecatedUpdateGridOption("enableCellTextSelection",t)},n.prototype.setHeaderHeight=function(t){this.deprecatedUpdateGridOption("headerHeight",t)},n.prototype.setDomLayout=function(t){this.deprecatedUpdateGridOption("domLayout",t)},n.prototype.setFillHandleDirection=function(t){this.deprecatedUpdateGridOption("fillHandleDirection",t)},n.prototype.setGroupHeaderHeight=function(t){this.deprecatedUpdateGridOption("groupHeaderHeight",t)},n.prototype.setFloatingFiltersHeight=function(t){this.deprecatedUpdateGridOption("floatingFiltersHeight",t)},n.prototype.setPivotHeaderHeight=function(t){this.deprecatedUpdateGridOption("pivotHeaderHeight",t)},n.prototype.setPivotGroupHeaderHeight=function(t){this.deprecatedUpdateGridOption("pivotGroupHeaderHeight",t)},n.prototype.setAnimateRows=function(t){this.deprecatedUpdateGridOption("animateRows",t)},n.prototype.setIsExternalFilterPresent=function(t){this.deprecatedUpdateGridOption("isExternalFilterPresent",t)},n.prototype.setDoesExternalFilterPass=function(t){this.deprecatedUpdateGridOption("doesExternalFilterPass",t)},n.prototype.setNavigateToNextCell=function(t){this.deprecatedUpdateGridOption("navigateToNextCell",t)},n.prototype.setTabToNextCell=function(t){this.deprecatedUpdateGridOption("tabToNextCell",t)},n.prototype.setTabToNextHeader=function(t){this.deprecatedUpdateGridOption("tabToNextHeader",t)},n.prototype.setNavigateToNextHeader=function(t){this.deprecatedUpdateGridOption("navigateToNextHeader",t)},n.prototype.setRowGroupPanelShow=function(t){this.deprecatedUpdateGridOption("rowGroupPanelShow",t)},n.prototype.setGetGroupRowAgg=function(t){this.deprecatedUpdateGridOption("getGroupRowAgg",t)},n.prototype.setGetBusinessKeyForNode=function(t){this.deprecatedUpdateGridOption("getBusinessKeyForNode",t)},n.prototype.setGetChildCount=function(t){this.deprecatedUpdateGridOption("getChildCount",t)},n.prototype.setProcessRowPostCreate=function(t){this.deprecatedUpdateGridOption("processRowPostCreate",t)},n.prototype.setGetRowId=function(t){V("getRowId is a static property and can no longer be updated.")},n.prototype.setGetRowClass=function(t){this.deprecatedUpdateGridOption("getRowClass",t)},n.prototype.setIsFullWidthRow=function(t){this.deprecatedUpdateGridOption("isFullWidthRow",t)},n.prototype.setIsRowSelectable=function(t){this.deprecatedUpdateGridOption("isRowSelectable",t)},n.prototype.setIsRowMaster=function(t){this.deprecatedUpdateGridOption("isRowMaster",t)},n.prototype.setPostSortRows=function(t){this.deprecatedUpdateGridOption("postSortRows",t)},n.prototype.setGetDocument=function(t){this.deprecatedUpdateGridOption("getDocument",t)},n.prototype.setGetContextMenuItems=function(t){this.deprecatedUpdateGridOption("getContextMenuItems",t)},n.prototype.setGetMainMenuItems=function(t){this.deprecatedUpdateGridOption("getMainMenuItems",t)},n.prototype.setProcessCellForClipboard=function(t){this.deprecatedUpdateGridOption("processCellForClipboard",t)},n.prototype.setSendToClipboard=function(t){this.deprecatedUpdateGridOption("sendToClipboard",t)},n.prototype.setProcessCellFromClipboard=function(t){this.deprecatedUpdateGridOption("processCellFromClipboard",t)},n.prototype.setProcessPivotResultColDef=function(t){this.deprecatedUpdateGridOption("processPivotResultColDef",t)},n.prototype.setProcessPivotResultColGroupDef=function(t){this.deprecatedUpdateGridOption("processPivotResultColGroupDef",t)},n.prototype.setPostProcessPopup=function(t){this.deprecatedUpdateGridOption("postProcessPopup",t)},n.prototype.setInitialGroupOrderComparator=function(t){this.deprecatedUpdateGridOption("initialGroupOrderComparator",t)},n.prototype.setGetChartToolbarItems=function(t){this.deprecatedUpdateGridOption("getChartToolbarItems",t)},n.prototype.setPaginationNumberFormatter=function(t){this.deprecatedUpdateGridOption("paginationNumberFormatter",t)},n.prototype.setGetServerSideGroupLevelParams=function(t){this.deprecatedUpdateGridOption("getServerSideGroupLevelParams",t)},n.prototype.setIsServerSideGroupOpenByDefault=function(t){this.deprecatedUpdateGridOption("isServerSideGroupOpenByDefault",t)},n.prototype.setIsApplyServerSideTransaction=function(t){this.deprecatedUpdateGridOption("isApplyServerSideTransaction",t)},n.prototype.setIsServerSideGroup=function(t){this.deprecatedUpdateGridOption("isServerSideGroup",t)},n.prototype.setGetServerSideGroupKey=function(t){this.deprecatedUpdateGridOption("getServerSideGroupKey",t)},n.prototype.setGetRowStyle=function(t){this.deprecatedUpdateGridOption("getRowStyle",t)},n.prototype.setGetRowHeight=function(t){this.deprecatedUpdateGridOption("getRowHeight",t)},K([Y("csvCreator")],n.prototype,"csvCreator",void 0),K([Y("excelCreator")],n.prototype,"excelCreator",void 0),K([v("rowRenderer")],n.prototype,"rowRenderer",void 0),K([v("navigationService")],n.prototype,"navigationService",void 0),K([v("filterManager")],n.prototype,"filterManager",void 0),K([v("columnModel")],n.prototype,"columnModel",void 0),K([v("selectionService")],n.prototype,"selectionService",void 0),K([v("gridOptionsService")],n.prototype,"gos",void 0),K([v("valueService")],n.prototype,"valueService",void 0),K([v("alignedGridsService")],n.prototype,"alignedGridsService",void 0),K([v("eventService")],n.prototype,"eventService",void 0),K([v("pinnedRowModel")],n.prototype,"pinnedRowModel",void 0),K([v("context")],n.prototype,"context",void 0),K([v("rowModel")],n.prototype,"rowModel",void 0),K([v("sortController")],n.prototype,"sortController",void 0),K([v("paginationProxy")],n.prototype,"paginationProxy",void 0),K([v("focusService")],n.prototype,"focusService",void 0),K([v("dragAndDropService")],n.prototype,"dragAndDropService",void 0),K([Y("rangeService")],n.prototype,"rangeService",void 0),K([Y("clipboardService")],n.prototype,"clipboardService",void 0),K([Y("aggFuncService")],n.prototype,"aggFuncService",void 0),K([v("menuService")],n.prototype,"menuService",void 0),K([v("valueCache")],n.prototype,"valueCache",void 0),K([v("animationFrameService")],n.prototype,"animationFrameService",void 0),K([Y("statusBarService")],n.prototype,"statusBarService",void 0),K([Y("chartService")],n.prototype,"chartService",void 0),K([Y("undoRedoService")],n.prototype,"undoRedoService",void 0),K([Y("rowNodeBlockLoader")],n.prototype,"rowNodeBlockLoader",void 0),K([Y("ssrmTransactionManager")],n.prototype,"serverSideTransactionManager",void 0),K([v("ctrlsService")],n.prototype,"ctrlsService",void 0),K([v("overlayService")],n.prototype,"overlayService",void 0),K([Y("sideBarService")],n.prototype,"sideBarService",void 0),K([v("stateService")],n.prototype,"stateService",void 0),K([v("expansionService")],n.prototype,"expansionService",void 0),K([v("apiEventService")],n.prototype,"apiEventService",void 0),K([v("frameworkOverrides")],n.prototype,"frameworkOverrides",void 0),K([F],n.prototype,"init",null),n=K([x("gridApi")],n),n}(),lf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ao=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Zl=function(n){lf(t,n);function t(){var r=n!==null&&n.apply(this,arguments)||this;return r.quickFilter=null,r.quickFilterParts=null,r}e=t,t.prototype.postConstruct=function(){var r=this;this.addManagedListener(this.eventService,g.EVENT_COLUMN_PIVOT_MODE_CHANGED,function(){return r.resetQuickFilterCache()}),this.addManagedListener(this.eventService,g.EVENT_NEW_COLUMNS_LOADED,function(){return r.resetQuickFilterCache()}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_ROW_GROUP_CHANGED,function(){return r.resetQuickFilterCache()}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_VISIBLE,function(){r.gridOptionsService.get("includeHiddenColumnsInQuickFilter")||r.resetQuickFilterCache()}),this.addManagedPropertyListener("quickFilterText",function(o){return r.setQuickFilter(o.currentValue)}),this.addManagedPropertyListener("includeHiddenColumnsInQuickFilter",function(){return r.onIncludeHiddenColumnsInQuickFilterChanged()}),this.quickFilter=this.parseQuickFilter(this.gridOptionsService.get("quickFilterText")),this.parser=this.gridOptionsService.get("quickFilterParser"),this.matcher=this.gridOptionsService.get("quickFilterMatcher"),this.setQuickFilterParts(),this.addManagedPropertyListeners(["quickFilterMatcher","quickFilterParser"],function(){return r.setQuickFilterParserAndMatcher()})},t.prototype.isQuickFilterPresent=function(){return this.quickFilter!==null},t.prototype.doesRowPassQuickFilter=function(r){var o=this,i=this.gridOptionsService.get("cacheQuickFilter");return this.matcher?this.doesRowPassQuickFilterMatcher(i,r):this.quickFilterParts.every(function(s){return i?o.doesRowPassQuickFilterCache(r,s):o.doesRowPassQuickFilterNoCache(r,s)})},t.prototype.resetQuickFilterCache=function(){this.rowModel.forEachNode(function(r){return r.quickFilterAggregateText=null})},t.prototype.setQuickFilterParts=function(){var r=this,o=r.quickFilter,i=r.parser;o?this.quickFilterParts=i?i(o):o.split(" "):this.quickFilterParts=null},t.prototype.parseQuickFilter=function(r){return P(r)?this.gridOptionsService.isRowModelType("clientSide")?r.toUpperCase():(console.warn("AG Grid - Quick filtering only works with the Client-Side Row Model"),null):null},t.prototype.setQuickFilter=function(r){if(r!=null&&typeof r!="string"){console.warn("AG Grid - Grid option quickFilterText only supports string inputs, received: ".concat(typeof r));return}var o=this.parseQuickFilter(r);this.quickFilter!==o&&(this.quickFilter=o,this.setQuickFilterParts(),this.dispatchEvent({type:e.EVENT_QUICK_FILTER_CHANGED}))},t.prototype.setQuickFilterParserAndMatcher=function(){var r=this.gridOptionsService.get("quickFilterParser"),o=this.gridOptionsService.get("quickFilterMatcher"),i=r!==this.parser||o!==this.matcher;this.parser=r,this.matcher=o,i&&(this.setQuickFilterParts(),this.dispatchEvent({type:e.EVENT_QUICK_FILTER_CHANGED}))},t.prototype.onIncludeHiddenColumnsInQuickFilterChanged=function(){this.columnModel.refreshQuickFilterColumns(),this.resetQuickFilterCache(),this.isQuickFilterPresent()&&this.dispatchEvent({type:e.EVENT_QUICK_FILTER_CHANGED})},t.prototype.doesRowPassQuickFilterNoCache=function(r,o){var i=this,s=this.columnModel.getAllColumnsForQuickFilter();return s.some(function(a){var l=i.getQuickFilterTextForColumn(a,r);return P(l)&&l.indexOf(o)>=0})},t.prototype.doesRowPassQuickFilterCache=function(r,o){return this.checkGenerateQuickFilterAggregateText(r),r.quickFilterAggregateText.indexOf(o)>=0},t.prototype.doesRowPassQuickFilterMatcher=function(r,o){var i;r?(this.checkGenerateQuickFilterAggregateText(o),i=o.quickFilterAggregateText):i=this.getQuickFilterAggregateText(o);var s=this,a=s.quickFilterParts,l=s.matcher;return l(a,i)},t.prototype.checkGenerateQuickFilterAggregateText=function(r){r.quickFilterAggregateText||(r.quickFilterAggregateText=this.getQuickFilterAggregateText(r))},t.prototype.getQuickFilterTextForColumn=function(r,o){var i=this.valueService.getValue(r,o,!0),s=r.getColDef();if(s.getQuickFilterText){var a=this.gridOptionsService.addGridCommonParams({value:i,node:o,data:o.data,column:r,colDef:s});i=s.getQuickFilterText(a)}return P(i)?i.toString().toUpperCase():null},t.prototype.getQuickFilterAggregateText=function(r){var o=this,i=[],s=this.columnModel.getAllColumnsForQuickFilter();return s.forEach(function(a){var l=o.getQuickFilterTextForColumn(a,r);P(l)&&i.push(l)}),i.join(e.QUICK_FILTER_SEPARATOR)};var e;return t.EVENT_QUICK_FILTER_CHANGED="quickFilterChanged",t.QUICK_FILTER_SEPARATOR=` +`,ao([v("valueService")],t.prototype,"valueService",void 0),ao([v("columnModel")],t.prototype,"columnModel",void 0),ao([v("rowModel")],t.prototype,"rowModel",void 0),ao([F],t.prototype,"postConstruct",null),t=e=ao([x("quickFilterService")],t),t}(D),uf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),yt=function(){return yt=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},cf=function(n){uf(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.allColumnFilters=new Map,e.allColumnListeners=new Map,e.activeAggregateFilters=[],e.activeColumnFilters=[],e.processingFilterChange=!1,e.filterModelUpdateQueue=[],e.columnFilterModelUpdateQueue=[],e.advancedFilterModelUpdateQueue=[],e}return t.prototype.init=function(){var e=this,r,o,i;this.addManagedListener(this.eventService,g.EVENT_GRID_COLUMNS_CHANGED,function(){return e.onColumnsChanged()}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_VALUE_CHANGED,function(){return e.refreshFiltersForAggregations()}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_PIVOT_CHANGED,function(){return e.refreshFiltersForAggregations()}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_PIVOT_MODE_CHANGED,function(){return e.refreshFiltersForAggregations()}),this.addManagedListener(this.eventService,g.EVENT_NEW_COLUMNS_LOADED,function(){return e.updateAdvancedFilterColumns()}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_VISIBLE,function(){return e.updateAdvancedFilterColumns()}),this.addManagedListener(this.eventService,g.EVENT_ROW_DATA_UPDATED,function(){return e.onNewRowsLoaded("rowDataUpdated")}),this.externalFilterPresent=this.isExternalFilterPresentCallback(),this.addManagedPropertyListeners(["isExternalFilterPresent","doesExternalFilterPass"],function(){e.onFilterChanged({source:"api"})}),this.updateAggFiltering(),this.addManagedPropertyListener("groupAggFiltering",function(){e.updateAggFiltering(),e.onFilterChanged()}),this.addManagedPropertyListener("advancedFilterModel",function(s){return e.setAdvancedFilterModel(s.currentValue)}),this.addManagedListener(this.eventService,g.EVENT_ADVANCED_FILTER_ENABLED_CHANGED,function(s){var a=s.enabled;return e.onAdvancedFilterEnabledChanged(a)}),this.addManagedListener(this.eventService,g.EVENT_DATA_TYPES_INFERRED,function(){return e.processFilterModelUpdateQueue()}),this.addManagedListener(this.quickFilterService,Zl.EVENT_QUICK_FILTER_CHANGED,function(){return e.onFilterChanged({source:"quickFilter"})}),this.initialFilterModel=yt({},(i=(o=(r=this.gridOptionsService.get("initialState"))===null||r===void 0?void 0:r.filter)===null||o===void 0?void 0:o.filterModel)!==null&&i!==void 0?i:{})},t.prototype.isExternalFilterPresentCallback=function(){var e=this.gridOptionsService.getCallback("isExternalFilterPresent");return typeof e=="function"?e({}):!1},t.prototype.doesExternalFilterPass=function(e){var r=this.gridOptionsService.get("doesExternalFilterPass");return typeof r=="function"?r(e):!1},t.prototype.setFilterModel=function(e,r){var o=this;if(r===void 0&&(r="api"),this.isAdvancedFilterEnabled()){this.warnAdvancedFilters();return}if(this.dataTypeService.isPendingInference()){this.filterModelUpdateQueue.push({model:e,source:r});return}var i=[],s=this.getFilterModel();if(e){var a=Yn(Object.keys(e));this.allColumnFilters.forEach(function(l,u){var c=e[u];i.push(o.setModelOnFilterWrapper(l.filterPromise,c)),a.delete(u)}),a.forEach(function(l){var u=o.columnModel.getPrimaryColumn(l)||o.columnModel.getGridColumn(l);if(!u){console.warn("AG Grid: setFilterModel() - no column found for colId: "+l);return}if(!u.isFilterAllowed()){console.warn("AG Grid: setFilterModel() - unable to fully apply model, filtering disabled for colId: "+l);return}var c=o.getOrCreateFilterWrapper(u,"NO_UI");if(!c){console.warn("AG-Grid: setFilterModel() - unable to fully apply model, unable to create filter for colId: "+l);return}i.push(o.setModelOnFilterWrapper(c.filterPromise,e[l]))})}else this.allColumnFilters.forEach(function(l){i.push(o.setModelOnFilterWrapper(l.filterPromise,null))});je.all(i).then(function(){var l=o.getFilterModel(),u=[];o.allColumnFilters.forEach(function(c,p){var d=s?s[p]:null,h=l?l[p]:null;j.jsonEquals(d,h)||u.push(c.column)}),u.length>0&&o.onFilterChanged({columns:u,source:r})})},t.prototype.setModelOnFilterWrapper=function(e,r){return new je(function(o){e.then(function(i){typeof i.setModel!="function"&&(console.warn("AG Grid: filter missing setModel method, which is needed for setFilterModel"),o()),(i.setModel(r)||je.resolve()).then(function(){return o()})})})},t.prototype.getFilterModel=function(){var e=this,r={};return this.allColumnFilters.forEach(function(o,i){var s=e.getModelFromFilterWrapper(o);P(s)&&(r[i]=s)}),r},t.prototype.getModelFromFilterWrapper=function(e){var r,o=e.filterPromise,i=o.resolveNow(null,function(s){return s});return i==null?(r=this.initialFilterModel[e.column.getColId()])!==null&&r!==void 0?r:null:typeof i.getModel!="function"?(console.warn("AG Grid: filter API missing getModel method, which is needed for getFilterModel"),null):i.getModel()},t.prototype.isColumnFilterPresent=function(){return this.activeColumnFilters.length>0},t.prototype.isAggregateFilterPresent=function(){return!!this.activeAggregateFilters.length},t.prototype.isExternalFilterPresent=function(){return this.externalFilterPresent},t.prototype.isChildFilterPresent=function(){return this.isColumnFilterPresent()||this.isQuickFilterPresent()||this.isExternalFilterPresent()||this.isAdvancedFilterPresent()},t.prototype.isAdvancedFilterPresent=function(){return this.isAdvancedFilterEnabled()&&this.advancedFilterService.isFilterPresent()},t.prototype.onAdvancedFilterEnabledChanged=function(e){var r=this,o;e?this.allColumnFilters.size&&(this.allColumnFilters.forEach(function(i){return r.disposeFilterWrapper(i,"advancedFilterEnabled")}),this.onFilterChanged({source:"advancedFilter"})):!((o=this.advancedFilterService)===null||o===void 0)&&o.isFilterPresent()&&(this.advancedFilterService.setModel(null),this.onFilterChanged({source:"advancedFilter"}))},t.prototype.isAdvancedFilterEnabled=function(){var e;return(e=this.advancedFilterService)===null||e===void 0?void 0:e.isEnabled()},t.prototype.isAdvancedFilterHeaderActive=function(){return this.isAdvancedFilterEnabled()&&this.advancedFilterService.isHeaderActive()},t.prototype.doAggregateFiltersPass=function(e,r){return this.doColumnFiltersPass(e,r,!0)},t.prototype.updateActiveFilters=function(){var e=this;this.activeColumnFilters.length=0,this.activeAggregateFilters.length=0;var r=function(s){return s?s.isFilterActive?s.isFilterActive():(console.warn("AG Grid: Filter is missing isFilterActive() method"),!1):!1},o=!!this.gridOptionsService.getGroupAggFiltering(),i=function(s){var a=!s.isPrimary();if(a)return!0;var l=!e.columnModel.isPivotActive(),u=s.isValueActive();return!u||!l?!1:e.columnModel.isPivotMode()?!0:o};this.allColumnFilters.forEach(function(s){if(s.filterPromise.resolveNow(!1,r)){var a=s.filterPromise.resolveNow(null,function(l){return l});i(s.column)?e.activeAggregateFilters.push(a):e.activeColumnFilters.push(a)}})},t.prototype.updateFilterFlagInColumns=function(e,r){this.allColumnFilters.forEach(function(o){var i=o.filterPromise.resolveNow(!1,function(s){return s.isFilterActive()});o.column.setFilterActive(i,e,r)})},t.prototype.isAnyFilterPresent=function(){return this.isQuickFilterPresent()||this.isColumnFilterPresent()||this.isAggregateFilterPresent()||this.isExternalFilterPresent()||this.isAdvancedFilterPresent()},t.prototype.doColumnFiltersPass=function(e,r,o){for(var i=e.data,s=e.aggData,a=o?this.activeAggregateFilters:this.activeColumnFilters,l=o?s:i,u=0;u0?this.onFilterChanged({columns:r,source:"api"}):this.updateDependantFilters()},t.prototype.updateDependantFilters=function(){var e=this,r=this.columnModel.getGroupAutoColumns();r==null||r.forEach(function(o){o.getColDef().filter==="agGroupColumnFilter"&&e.getOrCreateFilterWrapper(o,"NO_UI")})},t.prototype.isFilterAllowed=function(e){var r,o;if(this.isAdvancedFilterEnabled())return!1;var i=e.isFilterAllowed();if(!i)return!1;var s=this.allColumnFilters.get(e.getColId());return(o=(r=s==null?void 0:s.filterPromise)===null||r===void 0?void 0:r.resolveNow(!0,function(a){return typeof(a==null?void 0:a.isFilterAllowed)=="function"?a==null?void 0:a.isFilterAllowed():!0}))!==null&&o!==void 0?o:!0},t.prototype.getFloatingFilterCompDetails=function(e,r){var o=this,i=function(p){var d=o.getFilterComponent(e,"NO_UI");d!=null&&d.then(function(h){p(dr(h))})},s=e.getColDef(),a=yt(yt({},this.createFilterParams(e,s)),{filterChangedCallback:function(){return i(function(p){return o.filterChangedCallbackFactory(p,e)()})}}),l=this.userComponentFactory.mergeParamsWithApplicationProvidedParams(s,hs,a),u=this.userComponentFactory.getDefaultFloatingFilterType(s,function(){return o.getDefaultFloatingFilter(e)});u==null&&(u="agReadOnlyFloatingFilter");var c={column:e,filterParams:l,currentParentModel:function(){return o.getCurrentFloatingFilterParentModel(e)},parentFilterInstance:i,showParentFilter:r,suppressFilterButton:!1};return this.userComponentFactory.getFloatingFilterCompDetails(s,c,u)},t.prototype.getCurrentFloatingFilterParentModel=function(e){var r=this.getFilterComponent(e,"NO_UI",!1);return r?r.resolveNow(null,function(o){return o&&o.getModel()}):null},t.prototype.destroyFilter=function(e,r){r===void 0&&(r="api");var o=e.getColId(),i=this.allColumnFilters.get(o);this.disposeColumnListener(o),delete this.initialFilterModel[o],i&&(this.disposeFilterWrapper(i,r),this.onFilterChanged({columns:[e],source:"api"}))},t.prototype.disposeColumnListener=function(e){var r=this.allColumnListeners.get(e);r&&(this.allColumnListeners.delete(e),r())},t.prototype.disposeFilterWrapper=function(e,r){var o=this;e.filterPromise.then(function(i){o.getContext().destroyBean(i),e.column.setFilterActive(!1,"filterDestroyed"),o.allColumnFilters.delete(e.column.getColId());var s={type:g.EVENT_FILTER_DESTROYED,source:r,column:e.column};o.eventService.dispatchEvent(s)})},t.prototype.filterModifiedCallbackFactory=function(e,r){var o=this;return function(){var i={type:g.EVENT_FILTER_MODIFIED,column:r,filterInstance:e};o.eventService.dispatchEvent(i)}},t.prototype.filterChangedCallbackFactory=function(e,r){var o=this;return function(i){var s,a=(s=i==null?void 0:i.source)!==null&&s!==void 0?s:"api",l={filter:e,additionalEventAttributes:i,columns:[r],source:a};o.callOnFilterChangedOutsideRenderCycle(l)}},t.prototype.checkDestroyFilter=function(e){var r=this,o=this.allColumnFilters.get(e);if(o){var i=o.column,s=(i.isFilterAllowed()?this.createFilterInstance(i):{compDetails:null}).compDetails;if(this.areFilterCompsDifferent(o.compDetails,s)){this.destroyFilter(i,"paramsUpdated");return}var a=i.getColDef().filterParams;if(!o.filterPromise){this.destroyFilter(i,"paramsUpdated");return}o.filterPromise.then(function(l){var u=l!=null&&l.refresh?l.refresh(yt(yt(yt({},r.createFilterParams(i,i.getColDef())),{filterModifiedCallback:r.filterModifiedCallbackFactory(l,i),filterChangedCallback:r.filterChangedCallbackFactory(l,i),doesRowPassOtherFilter:function(c){return r.doesRowPassOtherFilters(l,c)}}),a)):!0;u===!1&&r.destroyFilter(i,"paramsUpdated")})}},t.prototype.setColumnFilterWrapper=function(e,r){var o=this,i=e.getColId();this.allColumnFilters.set(i,r),this.allColumnListeners.set(i,this.addManagedListener(e,J.EVENT_COL_DEF_CHANGED,function(){return o.checkDestroyFilter(i)}))},t.prototype.areFilterCompsDifferent=function(e,r){if(!r||!e)return!0;var o=e.componentClass,i=r.componentClass,s=o===i||(o==null?void 0:o.render)&&(i==null?void 0:i.render)&&o.render===i.render;return!s},t.prototype.getAdvancedFilterModel=function(){return this.isAdvancedFilterEnabled()?this.advancedFilterService.getModel():null},t.prototype.setAdvancedFilterModel=function(e){if(this.isAdvancedFilterEnabled()){if(this.dataTypeService.isPendingInference()){this.advancedFilterModelUpdateQueue.push(e);return}this.advancedFilterService.setModel(e??null),this.onFilterChanged({source:"advancedFilter"})}},t.prototype.showAdvancedFilterBuilder=function(e){this.isAdvancedFilterEnabled()&&this.advancedFilterService.getCtrl().toggleFilterBuilder(e,!0)},t.prototype.updateAdvancedFilterColumns=function(){this.isAdvancedFilterEnabled()&&this.advancedFilterService.updateValidity()&&this.onFilterChanged({source:"advancedFilter"})},t.prototype.hasFloatingFilters=function(){if(this.isAdvancedFilterEnabled())return!1;var e=this.columnModel.getAllGridColumns();return e.some(function(r){return r.getColDef().floatingFilter})},t.prototype.getFilterInstance=function(e,r){if(this.isAdvancedFilterEnabled()){this.warnAdvancedFilters();return}var o=this.getFilterInstanceImpl(e,function(s){if(r){var a=dr(s);r(a)}}),i=dr(o);return i},t.prototype.getColumnFilterInstance=function(e){var r=this;return new Promise(function(o){r.getFilterInstance(e,function(i){o(i)})})},t.prototype.getFilterInstanceImpl=function(e,r){var o=this.columnModel.getPrimaryColumn(e);if(o){var i=this.getFilterComponent(o,"NO_UI"),s=i&&i.resolveNow(null,function(a){return a});return s?setTimeout(r,0,s):i&&i.then(function(a){r(a)}),s}},t.prototype.warnAdvancedFilters=function(){V("Column Filter API methods have been disabled as Advanced Filters are enabled.")},t.prototype.setupAdvancedFilterHeaderComp=function(e){var r;(r=this.advancedFilterService)===null||r===void 0||r.getCtrl().setupHeaderComp(e)},t.prototype.getHeaderRowCount=function(){return this.isAdvancedFilterHeaderActive()?1:0},t.prototype.getHeaderHeight=function(){return this.isAdvancedFilterHeaderActive()?this.advancedFilterService.getCtrl().getHeaderHeight():0},t.prototype.processFilterModelUpdateQueue=function(){var e=this;this.filterModelUpdateQueue.forEach(function(r){var o=r.model,i=r.source;return e.setFilterModel(o,i)}),this.filterModelUpdateQueue=[],this.columnFilterModelUpdateQueue.forEach(function(r){var o=r.key,i=r.model,s=r.resolve;e.setColumnFilterModel(o,i).then(function(){return s()})}),this.columnFilterModelUpdateQueue=[],this.advancedFilterModelUpdateQueue.forEach(function(r){return e.setAdvancedFilterModel(r)}),this.advancedFilterModelUpdateQueue=[]},t.prototype.getColumnFilterModel=function(e){var r=this.getFilterWrapper(e);return r?this.getModelFromFilterWrapper(r):null},t.prototype.setColumnFilterModel=function(e,r){if(this.isAdvancedFilterEnabled())return this.warnAdvancedFilters(),Promise.resolve();if(this.dataTypeService.isPendingInference()){var o=function(){},i=new Promise(function(u){o=u});return this.columnFilterModelUpdateQueue.push({key:e,model:r,resolve:o}),i}var s=this.columnModel.getPrimaryColumn(e),a=s?this.getOrCreateFilterWrapper(s,"NO_UI"):null,l=function(u){return new Promise(function(c){u.then(function(p){return c(p)})})};return a?l(this.setModelOnFilterWrapper(a.filterPromise,r)):Promise.resolve()},t.prototype.getFilterWrapper=function(e){var r,o=this.columnModel.getPrimaryColumn(e);return o&&(r=this.cachedFilter(o))!==null&&r!==void 0?r:null},t.prototype.destroy=function(){var e=this;n.prototype.destroy.call(this),this.allColumnFilters.forEach(function(r){return e.disposeFilterWrapper(r,"gridDestroyed")}),this.allColumnListeners.clear()},mt([v("valueService")],t.prototype,"valueService",void 0),mt([v("columnModel")],t.prototype,"columnModel",void 0),mt([v("rowModel")],t.prototype,"rowModel",void 0),mt([v("userComponentFactory")],t.prototype,"userComponentFactory",void 0),mt([v("rowRenderer")],t.prototype,"rowRenderer",void 0),mt([v("dataTypeService")],t.prototype,"dataTypeService",void 0),mt([v("quickFilterService")],t.prototype,"quickFilterService",void 0),mt([Y("advancedFilterService")],t.prototype,"advancedFilterService",void 0),mt([F],t.prototype,"init",null),t=mt([x("filterManager")],t),t}(D),pf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),gs=function(n){pf(t,n);function t(e,r){var o=n.call(this,e)||this;return o.ctrl=r,o}return t.prototype.getCtrl=function(){return this.ctrl},t}(k),df=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),lo=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},hf=function(n){df(t,n);function t(e){return n.call(this,t.TEMPLATE,e)||this}return t.prototype.postConstruct=function(){var e=this,r=this.getGui(),o={addOrRemoveCssClass:function(i,s){return e.addOrRemoveCssClass(i,s)},addOrRemoveBodyCssClass:function(i,s){return e.eFloatingFilterBody.classList.toggle(i,s)},setButtonWrapperDisplayed:function(i){return $(e.eButtonWrapper,i)},setCompDetails:function(i){return e.setCompDetails(i)},getFloatingFilterComp:function(){return e.compPromise},setWidth:function(i){return r.style.width=i},setMenuIcon:function(i){return e.eButtonShowMainFilter.appendChild(i)}};this.ctrl.setComp(o,r,this.eButtonShowMainFilter,this.eFloatingFilterBody)},t.prototype.setCompDetails=function(e){var r=this;if(!e){this.destroyFloatingFilterComp(),this.compPromise=null;return}this.compPromise=e.newAgStackInstance(),this.compPromise.then(function(o){return r.afterCompCreated(o)})},t.prototype.destroyFloatingFilterComp=function(){this.floatingFilterComp&&(this.eFloatingFilterBody.removeChild(this.floatingFilterComp.getGui()),this.floatingFilterComp=this.destroyBean(this.floatingFilterComp))},t.prototype.afterCompCreated=function(e){if(e){if(!this.isAlive()){this.destroyBean(e);return}this.destroyFloatingFilterComp(),this.floatingFilterComp=e,this.eFloatingFilterBody.appendChild(e.getGui()),e.afterGuiAttached&&e.afterGuiAttached()}},t.TEMPLATE=`
+
+ +
`,lo([L("eFloatingFilterBody")],t.prototype,"eFloatingFilterBody",void 0),lo([L("eButtonWrapper")],t.prototype,"eButtonWrapper",void 0),lo([L("eButtonShowMainFilter")],t.prototype,"eButtonShowMainFilter",void 0),lo([F],t.prototype,"postConstruct",null),lo([Se],t.prototype,"destroyFloatingFilterComp",null),t}(gs),ff=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),vf=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},pe;(function(n){n.AUTO_HEIGHT="ag-layout-auto-height",n.NORMAL="ag-layout-normal",n.PRINT="ag-layout-print"})(pe||(pe={}));var ys=function(n){ff(t,n);function t(e){var r=n.call(this)||this;return r.view=e,r}return t.prototype.postConstruct=function(){this.addManagedPropertyListener("domLayout",this.updateLayoutClasses.bind(this)),this.updateLayoutClasses()},t.prototype.updateLayoutClasses=function(){var e=this.getDomLayout(),r={autoHeight:e==="autoHeight",normal:e==="normal",print:e==="print"},o=r.autoHeight?pe.AUTO_HEIGHT:r.print?pe.PRINT:pe.NORMAL;this.view.updateLayoutClasses(o,r)},t.prototype.getDomLayout=function(){var e,r=(e=this.gridOptionsService.get("domLayout"))!==null&&e!==void 0?e:"normal",o=["normal","print","autoHeight"];return o.indexOf(r)===-1?(V("".concat(r," is not valid for DOM Layout, valid values are 'normal', 'autoHeight', 'print'.")),"normal"):r},vf([F],t.prototype,"postConstruct",null),t}(D),gf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ci=function(){return ci=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Ce;(function(n){n[n.Vertical=0]="Vertical",n[n.Horizontal=1]="Horizontal"})(Ce||(Ce={}));var we;(function(n){n[n.Container=0]="Container",n[n.FakeContainer=1]="FakeContainer"})(we||(we={}));var yf=function(n){gf(t,n);function t(e){var r=n.call(this)||this;return r.lastScrollSource=[null,null],r.scrollLeft=-1,r.nextScrollTop=-1,r.scrollTop=-1,r.lastOffsetHeight=-1,r.lastScrollTop=-1,r.eBodyViewport=e,r.resetLastHScrollDebounced=He(function(){return r.lastScrollSource[Ce.Horizontal]=null},500),r.resetLastVScrollDebounced=He(function(){return r.lastScrollSource[Ce.Vertical]=null},500),r}return t.prototype.postConstruct=function(){var e=this;this.enableRtl=this.gridOptionsService.get("enableRtl"),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,this.onDisplayedColumnsWidthChanged.bind(this)),this.ctrlsService.whenReady(function(r){e.centerRowContainerCtrl=r.centerRowContainerCtrl,e.onDisplayedColumnsWidthChanged(),e.addScrollListener()})},t.prototype.addScrollListener=function(){var e=this.ctrlsService.getFakeHScrollComp(),r=this.ctrlsService.getFakeVScrollComp();this.addManagedListener(this.centerRowContainerCtrl.getViewportElement(),"scroll",this.onHScroll.bind(this)),e.onScrollCallback(this.onFakeHScroll.bind(this));var o=this.gridOptionsService.get("debounceVerticalScrollbar"),i=o?He(this.onVScroll.bind(this),100):this.onVScroll.bind(this),s=o?He(this.onFakeVScroll.bind(this),100):this.onFakeVScroll.bind(this);this.addManagedListener(this.eBodyViewport,"scroll",i),r.onScrollCallback(s)},t.prototype.onDisplayedColumnsWidthChanged=function(){this.enableRtl&&this.horizontallyScrollHeaderCenterAndFloatingCenter()},t.prototype.horizontallyScrollHeaderCenterAndFloatingCenter=function(e){var r=this.centerRowContainerCtrl==null;if(!r){e===void 0&&(e=this.centerRowContainerCtrl.getCenterViewportScrollLeft());var o=this.enableRtl?e:-e,i=this.ctrlsService.getTopCenterRowContainerCtrl(),s=this.ctrlsService.getStickyTopCenterRowContainerCtrl(),a=this.ctrlsService.getBottomCenterRowContainerCtrl(),l=this.ctrlsService.getFakeHScrollComp(),u=this.ctrlsService.getHeaderRowContainerCtrl();u.setHorizontalScroll(-o),a.setContainerTranslateX(o),i.setContainerTranslateX(o),s.setContainerTranslateX(o);var c=this.centerRowContainerCtrl.getViewportElement(),p=this.lastScrollSource[Ce.Horizontal]===we.Container;e=Math.abs(e),p?l.setScrollPosition(e):Zr(c,e,this.enableRtl)}},t.prototype.isControllingScroll=function(e,r){return this.lastScrollSource[r]==null?(this.lastScrollSource[r]=e,!0):this.lastScrollSource[r]===e},t.prototype.onFakeHScroll=function(){this.isControllingScroll(we.FakeContainer,Ce.Horizontal)&&this.onHScrollCommon(we.FakeContainer)},t.prototype.onHScroll=function(){this.isControllingScroll(we.Container,Ce.Horizontal)&&this.onHScrollCommon(we.Container)},t.prototype.onHScrollCommon=function(e){var r=this.centerRowContainerCtrl.getViewportElement(),o=r.scrollLeft;if(!this.shouldBlockScrollUpdate(Ce.Horizontal,o,!0)){var i;e===we.Container?i=Jr(r,this.enableRtl):i=this.ctrlsService.getFakeHScrollComp().getScrollPosition(),this.doHorizontalScroll(Math.round(i)),this.resetLastHScrollDebounced()}},t.prototype.onFakeVScroll=function(){this.isControllingScroll(we.FakeContainer,Ce.Vertical)&&this.onVScrollCommon(we.FakeContainer)},t.prototype.onVScroll=function(){this.isControllingScroll(we.Container,Ce.Vertical)&&this.onVScrollCommon(we.Container)},t.prototype.onVScrollCommon=function(e){var r;e===we.Container?r=this.eBodyViewport.scrollTop:r=this.ctrlsService.getFakeVScrollComp().getScrollPosition(),!this.shouldBlockScrollUpdate(Ce.Vertical,r,!0)&&(this.animationFrameService.setScrollTop(r),this.nextScrollTop=r,e===we.Container?this.ctrlsService.getFakeVScrollComp().setScrollPosition(r):this.eBodyViewport.scrollTop=r,this.gridOptionsService.get("suppressAnimationFrame")?this.scrollGridIfNeeded():this.animationFrameService.schedule(),this.resetLastVScrollDebounced())},t.prototype.doHorizontalScroll=function(e){var r=this.ctrlsService.getFakeHScrollComp().getScrollPosition();this.scrollLeft===e&&e===r||(this.scrollLeft=e,this.fireScrollEvent(Ce.Horizontal),this.horizontallyScrollHeaderCenterAndFloatingCenter(e),this.centerRowContainerCtrl.onHorizontalViewportChanged(!0))},t.prototype.fireScrollEvent=function(e){var r=this,o={type:g.EVENT_BODY_SCROLL,direction:e===Ce.Horizontal?"horizontal":"vertical",left:this.scrollLeft,top:this.scrollTop};this.eventService.dispatchEvent(o),window.clearTimeout(this.scrollTimer),this.scrollTimer=void 0,this.scrollTimer=window.setTimeout(function(){var i=ci(ci({},o),{type:g.EVENT_BODY_SCROLL_END});r.eventService.dispatchEvent(i)},100)},t.prototype.shouldBlockScrollUpdate=function(e,r,o){return o===void 0&&(o=!1),o&&!Dt()?!1:e===Ce.Vertical?this.shouldBlockVerticalScroll(r):this.shouldBlockHorizontalScroll(r)},t.prototype.shouldBlockVerticalScroll=function(e){var r=qr(this.eBodyViewport),o=this.eBodyViewport.scrollHeight;return e<0||e+r>o},t.prototype.shouldBlockHorizontalScroll=function(e){var r=this.centerRowContainerCtrl.getCenterWidth(),o=this.centerRowContainerCtrl.getViewportElement().scrollWidth;if(this.enableRtl&&Xr()){if(e>0)return!0}else if(e<0)return!0;return Math.abs(e)+r>o},t.prototype.redrawRowsAfterScroll=function(){this.fireScrollEvent(Ce.Vertical)},t.prototype.checkScrollLeft=function(){this.scrollLeft!==this.centerRowContainerCtrl.getCenterViewportScrollLeft()&&this.onHScrollCommon(we.Container)},t.prototype.scrollGridIfNeeded=function(){var e=this.scrollTop!=this.nextScrollTop;return e&&(this.scrollTop=this.nextScrollTop,this.redrawRowsAfterScroll()),e},t.prototype.setHorizontalScrollPosition=function(e,r){r===void 0&&(r=!1);var o=0,i=this.centerRowContainerCtrl.getViewportElement().scrollWidth-this.centerRowContainerCtrl.getCenterWidth();!r&&this.shouldBlockScrollUpdate(Ce.Horizontal,e)&&(this.enableRtl&&Xr()?e=e>0?0:i:e=Math.min(Math.max(e,o),i)),Zr(this.centerRowContainerCtrl.getViewportElement(),Math.abs(e),this.enableRtl),this.doHorizontalScroll(e)},t.prototype.setVerticalScrollPosition=function(e){this.eBodyViewport.scrollTop=e},t.prototype.getVScrollPosition=function(){this.lastScrollTop=this.eBodyViewport.scrollTop,this.lastOffsetHeight=this.eBodyViewport.offsetHeight;var e={top:this.lastScrollTop,bottom:this.lastScrollTop+this.lastOffsetHeight};return e},t.prototype.getApproximateVScollPosition=function(){return this.lastScrollTop>=0&&this.lastOffsetHeight>=0?{top:this.scrollTop,bottom:this.scrollTop+this.lastOffsetHeight}:this.getVScrollPosition()},t.prototype.getHScrollPosition=function(){return this.centerRowContainerCtrl.getHScrollPosition()},t.prototype.isHorizontalScrollShowing=function(){return this.centerRowContainerCtrl.isHorizontalScrollShowing()},t.prototype.scrollHorizontally=function(e){var r=this.centerRowContainerCtrl.getViewportElement().scrollLeft;return this.setHorizontalScrollPosition(r+e),this.centerRowContainerCtrl.getViewportElement().scrollLeft-r},t.prototype.scrollToTop=function(){this.eBodyViewport.scrollTop=0},t.prototype.ensureNodeVisible=function(e,r){r===void 0&&(r=null);for(var o=this.rowModel.getRowCount(),i=-1,s=0;s=0&&this.ensureIndexVisible(i,r)},t.prototype.ensureIndexVisible=function(e,r){var o=this;if(!this.gridOptionsService.isDomLayout("print")){var i=this.paginationProxy.getRowCount();if(typeof e!="number"||e<0||e>=i){console.warn("AG Grid: Invalid row index for ensureIndexVisible: "+e);return}var s=this.gridOptionsService.get("pagination"),a=s&&!this.gridOptionsService.get("suppressPaginationPanel");this.getFrameworkOverrides().wrapIncoming(function(){a||o.paginationProxy.goToPageWithIndex(e);var l=o.ctrlsService.getGridBodyCtrl(),u=l.getStickyTopHeight(),c=o.paginationProxy.getRow(e),p;do{var d=c.rowTop,h=c.rowHeight,f=o.paginationProxy.getPixelOffset(),y=c.rowTop-f,m=y+c.rowHeight,C=o.getVScrollPosition(),w=o.heightScaler.getDivStretchOffset(),E=C.top+w,S=C.bottom+w,R=S-E,O=o.heightScaler.getScrollPositionForPixel(y),b=o.heightScaler.getScrollPositionForPixel(m-R),A=Math.min((O+b)/2,y),M=E+u>y,N=Sl:ia;return{columnBeforeStart:c,columnAfterEnd:p}},t.prototype.getColumnBounds=function(e){var r=this.enableRtl,o=this.columnModel.getBodyContainerWidth(),i=e.getActualWidth(),s=e.getLeft(),a=r?-1:1,l=r?o-s:s,u=l+i*a,c=l+i/2*a;return{colLeft:l,colMiddle:c,colRight:u}},t.prototype.getViewportBounds=function(){var e=this.centerRowContainerCtrl.getCenterWidth(),r=this.centerRowContainerCtrl.getCenterViewportScrollLeft(),o=r,i=e+r;return{start:o,end:i,width:e}},Wt([v("ctrlsService")],t.prototype,"ctrlsService",void 0),Wt([v("animationFrameService")],t.prototype,"animationFrameService",void 0),Wt([v("paginationProxy")],t.prototype,"paginationProxy",void 0),Wt([v("rowModel")],t.prototype,"rowModel",void 0),Wt([v("rowContainerHeightService")],t.prototype,"heightScaler",void 0),Wt([v("rowRenderer")],t.prototype,"rowRenderer",void 0),Wt([v("columnModel")],t.prototype,"columnModel",void 0),Wt([F],t.prototype,"postConstruct",null),t}(D),mf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ms=function(){return ms=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Cf=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Sf=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;rthis.paginationProxy.getCurrentPageHeight(),s=-1,a;i||(s=this.rowModel.getRowIndexAtPixel(o),a=this.rowModel.getRow(s));var l;switch(r.vDirection){case Fr.Down:l="down";break;case Fr.Up:l="up";break;default:l=null;break}var u=this.gridOptionsService.addGridCommonParams({type:e,event:r.event,node:r.dragItem.rowNode,nodes:r.dragItem.rowNodes,overIndex:s,overNode:a,y:o,vDirection:l});return u},t.prototype.dispatchGridEvent=function(e,r){var o=this.draggingToRowDragEvent(e,r);this.eventService.dispatchEvent(o)},t.prototype.onDragLeave=function(e){this.dispatchGridEvent(g.EVENT_ROW_DRAG_LEAVE,e),this.stopDragging(e),this.gridOptionsService.get("rowDragManaged")&&this.clearRowHighlight(),this.isFromThisGrid(e)&&(this.isMultiRowDrag=!1)},t.prototype.onDragStop=function(e){this.dispatchGridEvent(g.EVENT_ROW_DRAG_END,e),this.stopDragging(e),this.gridOptionsService.get("rowDragManaged")&&(this.gridOptionsService.get("suppressMoveWhenRowDragging")||!this.isFromThisGrid(e))&&!this.isDropZoneWithinThisGrid(e)&&this.moveRowAndClearHighlight(e)},t.prototype.stopDragging=function(e){this.autoScrollService.ensureCleared(),this.getRowNodes(e).forEach(function(r){r.setDragging(!1)})},tt([v("dragAndDropService")],t.prototype,"dragAndDropService",void 0),tt([v("rowModel")],t.prototype,"rowModel",void 0),tt([v("paginationProxy")],t.prototype,"paginationProxy",void 0),tt([v("columnModel")],t.prototype,"columnModel",void 0),tt([v("focusService")],t.prototype,"focusService",void 0),tt([v("sortController")],t.prototype,"sortController",void 0),tt([v("filterManager")],t.prototype,"filterManager",void 0),tt([v("selectionService")],t.prototype,"selectionService",void 0),tt([v("mouseEventService")],t.prototype,"mouseEventService",void 0),tt([v("ctrlsService")],t.prototype,"ctrlsService",void 0),tt([Y("rangeService")],t.prototype,"rangeService",void 0),tt([F],t.prototype,"postConstruct",null),t}(D),Ef=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Pe=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Mr;(function(n){n.ANIMATION_ON="ag-row-animation",n.ANIMATION_OFF="ag-row-no-animation"})(Mr||(Mr={}));var eu="ag-force-vertical-scroll",_f="ag-selectable",Rf="ag-column-moving",Of=function(n){Ef(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.stickyTopHeight=0,e}return t.prototype.getScrollFeature=function(){return this.bodyScrollFeature},t.prototype.getBodyViewportElement=function(){return this.eBodyViewport},t.prototype.setComp=function(e,r,o,i,s,a){var l=this;this.comp=e,this.eGridBody=r,this.eBodyViewport=o,this.eTop=i,this.eBottom=s,this.eStickyTop=a,this.setCellTextSelection(this.gridOptionsService.get("enableCellTextSelection")),this.addManagedPropertyListener("enableCellTextSelection",function(u){return l.setCellTextSelection(u.currentValue)}),this.createManagedBean(new ys(this.comp)),this.bodyScrollFeature=this.createManagedBean(new yf(this.eBodyViewport)),this.addRowDragListener(),this.setupRowAnimationCssClass(),this.addEventListeners(),this.addFocusListeners([i,o,s,a]),this.onGridColumnsChanged(),this.addBodyViewportListener(),this.setFloatingHeights(),this.disableBrowserDragging(),this.addStopEditingWhenGridLosesFocus(),this.filterManager.setupAdvancedFilterHeaderComp(i),this.ctrlsService.registerGridBodyCtrl(this)},t.prototype.getComp=function(){return this.comp},t.prototype.addEventListeners=function(){this.addManagedListener(this.eventService,g.EVENT_GRID_COLUMNS_CHANGED,this.onGridColumnsChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_SCROLL_VISIBILITY_CHANGED,this.onScrollVisibilityChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_PINNED_ROW_DATA_CHANGED,this.onPinnedRowDataChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_HEADER_HEIGHT_CHANGED,this.onHeaderHeightChanged.bind(this))},t.prototype.addFocusListeners=function(e){var r=this;e.forEach(function(o){r.addManagedListener(o,"focusin",function(i){var s=i.target,a=or(s,"ag-root",o);o.classList.toggle("ag-has-focus",!a)}),r.addManagedListener(o,"focusout",function(i){var s=i.target,a=i.relatedTarget,l=o.contains(a),u=or(a,"ag-root",o),c=or(s,"ag-root",o);c||(!l||u)&&o.classList.remove("ag-has-focus")})})},t.prototype.setColumnMovingCss=function(e){this.comp.setColumnMovingCss(Rf,e)},t.prototype.setCellTextSelection=function(e){e===void 0&&(e=!1),this.comp.setCellSelectableCss(_f,e)},t.prototype.onScrollVisibilityChanged=function(){var e=this,r=this.scrollVisibleService.isVerticalScrollShowing();this.setVerticalScrollPaddingVisible(r),this.setStickyTopWidth(r);var o=r&&this.gridOptionsService.getScrollbarWidth()||0,i=Ln()?16:0,s="calc(100% + ".concat(o+i,"px)");this.animationFrameService.requestAnimationFrame(function(){return e.comp.setBodyViewportWidth(s)})},t.prototype.onGridColumnsChanged=function(){var e=this.columnModel.getAllGridColumns();this.comp.setColumnCount(e.length)},t.prototype.disableBrowserDragging=function(){this.addManagedListener(this.eGridBody,"dragstart",function(e){if(e.target instanceof HTMLImageElement)return e.preventDefault(),!1})},t.prototype.addStopEditingWhenGridLosesFocus=function(){var e=this;if(this.gridOptionsService.get("stopEditingWhenCellsLoseFocus")){var r=function(i){var s=i.relatedTarget;if(Yo(s)===null){e.rowRenderer.stopEditing();return}var a=o.some(function(u){return u.contains(s)})&&e.mouseEventService.isElementInThisGrid(s);if(!a){var l=e.popupService;a=l.getActivePopups().some(function(u){return u.contains(s)})||l.isElementWithinCustomPopup(s)}a||e.rowRenderer.stopEditing()},o=[this.eBodyViewport,this.eBottom,this.eTop,this.eStickyTop];o.forEach(function(i){return e.addManagedListener(i,"focusout",r)})}},t.prototype.updateRowCount=function(){var e=this.headerNavigationService.getHeaderRowCount()+this.filterManager.getHeaderRowCount(),r=this.rowModel.isLastRowIndexKnown()?this.rowModel.getRowCount():-1,o=r===-1?-1:e+r;this.comp.setRowCount(o)},t.prototype.registerBodyViewportResizeListener=function(e){this.comp.registerBodyViewportResizeListener(e)},t.prototype.setVerticalScrollPaddingVisible=function(e){var r=e?"scroll":"hidden";this.comp.setPinnedTopBottomOverflowY(r)},t.prototype.isVerticalScrollShowing=function(){var e=this.gridOptionsService.get("alwaysShowVerticalScroll"),r=e?eu:null,o=this.gridOptionsService.isDomLayout("normal");return this.comp.setAlwaysVerticalScrollClass(r,e),e||o&&ol(this.eBodyViewport)},t.prototype.setupRowAnimationCssClass=function(){var e=this,r=function(){var o=e.gridOptionsService.isAnimateRows()&&!e.rowContainerHeightService.isStretching(),i=o?Mr.ANIMATION_ON:Mr.ANIMATION_OFF;e.comp.setRowAnimationCssOnBodyViewport(i,o)};r(),this.addManagedListener(this.eventService,g.EVENT_HEIGHT_SCALE_CHANGED,r),this.addManagedPropertyListener("animateRows",r)},t.prototype.getGridBodyElement=function(){return this.eGridBody},t.prototype.addBodyViewportListener=function(){var e=this.onBodyViewportContextMenu.bind(this);this.addManagedListener(this.eBodyViewport,"contextmenu",e),this.mockContextMenuForIPad(e),this.addManagedListener(this.eBodyViewport,"wheel",this.onBodyViewportWheel.bind(this)),this.addManagedListener(this.eStickyTop,"wheel",this.onStickyTopWheel.bind(this)),this.addFullWidthContainerWheelListener()},t.prototype.addFullWidthContainerWheelListener=function(){var e=this,r=this.eBodyViewport.querySelector(".ag-full-width-container"),o=this.eBodyViewport.querySelector(".ag-center-cols-viewport");r&&o&&this.addManagedListener(r,"wheel",function(i){return e.onFullWidthContainerWheel(i,o)})},t.prototype.onFullWidthContainerWheel=function(e,r){!e.deltaX||Math.abs(e.deltaY)>Math.abs(e.deltaX)||!this.mouseEventService.isEventFromThisGrid(e)||(e.preventDefault(),r.scrollBy({left:e.deltaX}))},t.prototype.onBodyViewportContextMenu=function(e,r,o){if(!(!e&&!o)){if(this.gridOptionsService.get("preventDefaultOnContextMenu")){var i=e||o;i.preventDefault()}var s=(e||r).target;(s===this.eBodyViewport||s===this.ctrlsService.getCenterRowContainerCtrl().getViewportElement())&&this.menuService.showContextMenu({mouseEvent:e,touchEvent:o,value:null,anchorToElement:this.eGridBody})}},t.prototype.mockContextMenuForIPad=function(e){if(Dt()){var r=new me(this.eBodyViewport),o=function(i){e(void 0,i.touchStart,i.touchEvent)};this.addManagedListener(r,me.EVENT_LONG_TAP,o),this.addDestroyFunc(function(){return r.destroy()})}},t.prototype.onBodyViewportWheel=function(e){this.gridOptionsService.get("suppressScrollWhenPopupsAreOpen")&&this.popupService.hasAnchoredPopup()&&e.preventDefault()},t.prototype.onStickyTopWheel=function(e){e.preventDefault(),e.offsetY&&this.scrollVertically(e.deltaY)},t.prototype.getGui=function(){return this.eGridBody},t.prototype.scrollVertically=function(e){var r=this.eBodyViewport.scrollTop;return this.bodyScrollFeature.setVerticalScrollPosition(r+e),this.eBodyViewport.scrollTop-r},t.prototype.addRowDragListener=function(){this.rowDragFeature=this.createManagedBean(new wf(this.eBodyViewport)),this.dragAndDropService.addDropTarget(this.rowDragFeature)},t.prototype.getRowDragFeature=function(){return this.rowDragFeature},t.prototype.onPinnedRowDataChanged=function(){this.setFloatingHeights()},t.prototype.setFloatingHeights=function(){var e=this.pinnedRowModel,r=e.getPinnedTopTotalHeight(),o=e.getPinnedBottomTotalHeight();this.comp.setTopHeight(r),this.comp.setBottomHeight(o),this.comp.setTopDisplay(r?"inherit":"none"),this.comp.setBottomDisplay(o?"inherit":"none"),this.setStickyTopOffsetTop()},t.prototype.setStickyTopHeight=function(e){e===void 0&&(e=0),this.comp.setStickyTopHeight("".concat(e,"px")),this.stickyTopHeight=e},t.prototype.getStickyTopHeight=function(){return this.stickyTopHeight},t.prototype.setStickyTopWidth=function(e){if(!e)this.comp.setStickyTopWidth("100%");else{var r=this.gridOptionsService.getScrollbarWidth();this.comp.setStickyTopWidth("calc(100% - ".concat(r,"px)"))}},t.prototype.onHeaderHeightChanged=function(){this.setStickyTopOffsetTop()},t.prototype.setStickyTopOffsetTop=function(){var e=this.ctrlsService.getGridHeaderCtrl(),r=e.getHeaderHeight()+this.filterManager.getHeaderHeight(),o=this.pinnedRowModel.getPinnedTopTotalHeight(),i=0;r>0&&(i+=r+1),o>0&&(i+=o+1),this.comp.setStickyTopTop("".concat(i,"px"))},t.prototype.sizeColumnsToFit=function(e,r){var o=this,i=this.isVerticalScrollShowing(),s=i?this.gridOptionsService.getScrollbarWidth():0,a=ir(this.eGridBody),l=a-s;if(l>0){this.columnModel.sizeColumnsToFit(l,"sizeColumnsToFit",!1,e);return}r===void 0?window.setTimeout(function(){o.sizeColumnsToFit(e,100)},0):r===100?window.setTimeout(function(){o.sizeColumnsToFit(e,500)},100):r===500?window.setTimeout(function(){o.sizeColumnsToFit(e,-1)},500):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?")},t.prototype.addScrollEventListener=function(e){this.eBodyViewport.addEventListener("scroll",e,{passive:!0})},t.prototype.removeScrollEventListener=function(e){this.eBodyViewport.removeEventListener("scroll",e)},Pe([v("animationFrameService")],t.prototype,"animationFrameService",void 0),Pe([v("rowContainerHeightService")],t.prototype,"rowContainerHeightService",void 0),Pe([v("ctrlsService")],t.prototype,"ctrlsService",void 0),Pe([v("columnModel")],t.prototype,"columnModel",void 0),Pe([v("scrollVisibleService")],t.prototype,"scrollVisibleService",void 0),Pe([v("menuService")],t.prototype,"menuService",void 0),Pe([v("headerNavigationService")],t.prototype,"headerNavigationService",void 0),Pe([v("dragAndDropService")],t.prototype,"dragAndDropService",void 0),Pe([v("pinnedRowModel")],t.prototype,"pinnedRowModel",void 0),Pe([v("rowRenderer")],t.prototype,"rowRenderer",void 0),Pe([v("popupService")],t.prototype,"popupService",void 0),Pe([v("mouseEventService")],t.prototype,"mouseEventService",void 0),Pe([v("rowModel")],t.prototype,"rowModel",void 0),Pe([v("filterManager")],t.prototype,"filterManager",void 0),t}(D),pi;(function(n){n[n.FILL=0]="FILL",n[n.RANGE=1]="RANGE"})(pi||(pi={}));var Ir;(function(n){n[n.VALUE=0]="VALUE",n[n.DIMENSION=1]="DIMENSION"})(Ir||(Ir={}));var uo="ag-cell-range-selected",Tf="ag-cell-range-chart",Pf="ag-cell-range-single-cell",Df="ag-cell-range-chart-category",Af="ag-cell-range-handle",bf="ag-cell-range-top",Ff="ag-cell-range-right",Lf="ag-cell-range-bottom",Mf="ag-cell-range-left",If=function(){function n(t,e){this.beans=t,this.cellCtrl=e}return n.prototype.setComp=function(t,e){this.cellComp=t,this.eGui=e,this.onRangeSelectionChanged()},n.prototype.onRangeSelectionChanged=function(){this.cellComp&&(this.rangeCount=this.beans.rangeService.getCellRangeCount(this.cellCtrl.getCellPosition()),this.hasChartRange=this.getHasChartRange(),this.cellComp.addOrRemoveCssClass(uo,this.rangeCount!==0),this.cellComp.addOrRemoveCssClass("".concat(uo,"-1"),this.rangeCount===1),this.cellComp.addOrRemoveCssClass("".concat(uo,"-2"),this.rangeCount===2),this.cellComp.addOrRemoveCssClass("".concat(uo,"-3"),this.rangeCount===3),this.cellComp.addOrRemoveCssClass("".concat(uo,"-4"),this.rangeCount>=4),this.cellComp.addOrRemoveCssClass(Tf,this.hasChartRange),Rr(this.eGui,this.rangeCount>0?!0:void 0),this.cellComp.addOrRemoveCssClass(Pf,this.isSingleCell()),this.updateRangeBorders(),this.refreshHandle())},n.prototype.updateRangeBorders=function(){var t=this.getRangeBorders(),e=this.isSingleCell(),r=!e&&t.top,o=!e&&t.right,i=!e&&t.bottom,s=!e&&t.left;this.cellComp.addOrRemoveCssClass(bf,r),this.cellComp.addOrRemoveCssClass(Ff,o),this.cellComp.addOrRemoveCssClass(Lf,i),this.cellComp.addOrRemoveCssClass(Mf,s)},n.prototype.isSingleCell=function(){var t=this.beans.rangeService;return this.rangeCount===1&&t&&!t.isMoreThanOneCell()},n.prototype.getHasChartRange=function(){var t=this.beans.rangeService;if(!this.rangeCount||!t)return!1;var e=t.getCellRanges();return e.length>0&&e.every(function(r){return ot([Ir.DIMENSION,Ir.VALUE],r.type)})},n.prototype.updateRangeBordersIfRangeCount=function(){this.rangeCount>0&&(this.updateRangeBorders(),this.refreshHandle())},n.prototype.getRangeBorders=function(){var t=this,e=this.beans.gridOptionsService.get("enableRtl"),r=!1,o=!1,i=!1,s=!1,a=this.cellCtrl.getCellPosition().column,l=this.beans,u=l.rangeService,c=l.columnModel,p,d;e?(p=c.getDisplayedColAfter(a),d=c.getDisplayedColBefore(a)):(p=c.getDisplayedColBefore(a),d=c.getDisplayedColAfter(a));var h=u.getCellRanges().filter(function(w){return u.isCellInSpecificRange(t.cellCtrl.getCellPosition(),w)});p||(s=!0),d||(o=!0);for(var f=0;f=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},tu=function(){function n(){}return n.prototype.postConstruct=function(){this.gridOptionsService.isRowModelType("clientSide")&&(this.clientSideRowModel=this.rowModel),this.gridOptionsService.isRowModelType("serverSide")&&(this.serverSideRowModel=this.rowModel)},B([v("resizeObserverService")],n.prototype,"resizeObserverService",void 0),B([v("paginationProxy")],n.prototype,"paginationProxy",void 0),B([v("context")],n.prototype,"context",void 0),B([v("columnApi")],n.prototype,"columnApi",void 0),B([v("gridApi")],n.prototype,"gridApi",void 0),B([v("gridOptionsService")],n.prototype,"gridOptionsService",void 0),B([v("expressionService")],n.prototype,"expressionService",void 0),B([v("environment")],n.prototype,"environment",void 0),B([v("rowRenderer")],n.prototype,"rowRenderer",void 0),B([v("templateService")],n.prototype,"templateService",void 0),B([v("valueService")],n.prototype,"valueService",void 0),B([v("eventService")],n.prototype,"eventService",void 0),B([v("columnModel")],n.prototype,"columnModel",void 0),B([v("headerNavigationService")],n.prototype,"headerNavigationService",void 0),B([v("navigationService")],n.prototype,"navigationService",void 0),B([v("columnAnimationService")],n.prototype,"columnAnimationService",void 0),B([Y("rangeService")],n.prototype,"rangeService",void 0),B([v("focusService")],n.prototype,"focusService",void 0),B([v("popupService")],n.prototype,"popupService",void 0),B([v("valueFormatterService")],n.prototype,"valueFormatterService",void 0),B([v("stylingService")],n.prototype,"stylingService",void 0),B([v("columnHoverService")],n.prototype,"columnHoverService",void 0),B([v("userComponentFactory")],n.prototype,"userComponentFactory",void 0),B([v("userComponentRegistry")],n.prototype,"userComponentRegistry",void 0),B([v("animationFrameService")],n.prototype,"animationFrameService",void 0),B([v("dragService")],n.prototype,"dragService",void 0),B([v("dragAndDropService")],n.prototype,"dragAndDropService",void 0),B([v("sortController")],n.prototype,"sortController",void 0),B([v("filterManager")],n.prototype,"filterManager",void 0),B([v("rowContainerHeightService")],n.prototype,"rowContainerHeightService",void 0),B([v("frameworkOverrides")],n.prototype,"frameworkOverrides",void 0),B([v("cellPositionUtils")],n.prototype,"cellPositionUtils",void 0),B([v("rowPositionUtils")],n.prototype,"rowPositionUtils",void 0),B([v("selectionService")],n.prototype,"selectionService",void 0),B([Y("selectionHandleFactory")],n.prototype,"selectionHandleFactory",void 0),B([v("rowCssClassCalculator")],n.prototype,"rowCssClassCalculator",void 0),B([v("rowModel")],n.prototype,"rowModel",void 0),B([v("ctrlsService")],n.prototype,"ctrlsService",void 0),B([v("ctrlsFactory")],n.prototype,"ctrlsFactory",void 0),B([v("agStackComponentsRegistry")],n.prototype,"agStackComponentsRegistry",void 0),B([v("valueCache")],n.prototype,"valueCache",void 0),B([v("rowNodeEventThrottle")],n.prototype,"rowNodeEventThrottle",void 0),B([v("localeService")],n.prototype,"localeService",void 0),B([v("valueParserService")],n.prototype,"valueParserService",void 0),B([v("syncService")],n.prototype,"syncService",void 0),B([v("ariaAnnouncementService")],n.prototype,"ariaAnnouncementService",void 0),B([F],n.prototype,"postConstruct",null),n=B([x("beans")],n),n}(),Bf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),kf=function(n){Bf(t,n);function t(e,r,o){var i=n.call(this)||this;return i.cellCtrl=e,i.beans=r,i.column=o,i}return t.prototype.onMouseEvent=function(e,r){if(!nt(r))switch(e){case"click":this.onCellClicked(r);break;case"mousedown":case"touchstart":this.onMouseDown(r);break;case"dblclick":this.onCellDoubleClicked(r);break;case"mouseout":this.onMouseOut(r);break;case"mouseover":this.onMouseOver(r);break}},t.prototype.onCellClicked=function(e){var r=this;if(this.isDoubleClickOnIPad()){this.onCellDoubleClicked(e),e.preventDefault();return}var o=this.beans,i=o.eventService,s=o.rangeService,a=o.gridOptionsService,l=e.ctrlKey||e.metaKey;s&&l&&s.getCellRangeCount(this.cellCtrl.getCellPosition())>1&&s.intersectLastRange(!0);var u=this.cellCtrl.createEvent(e,g.EVENT_CELL_CLICKED);i.dispatchEvent(u);var c=this.column.getColDef();c.onCellClicked&&window.setTimeout(function(){r.beans.frameworkOverrides.wrapOutgoing(function(){c.onCellClicked(u)})},0);var p=(a.get("singleClickEdit")||c.singleClickEdit)&&!a.get("suppressClickEdit");p&&!(e.shiftKey&&(s==null?void 0:s.getCellRanges().length)!=0)&&this.cellCtrl.startRowOrCellEdit()},t.prototype.isDoubleClickOnIPad=function(){if(!Dt()||an("dblclick"))return!1;var e=new Date().getTime(),r=e-this.lastIPadMouseClickEvent<200;return this.lastIPadMouseClickEvent=e,r},t.prototype.onCellDoubleClicked=function(e){var r=this,o=this.column.getColDef(),i=this.cellCtrl.createEvent(e,g.EVENT_CELL_DOUBLE_CLICKED);this.beans.eventService.dispatchEvent(i),typeof o.onCellDoubleClicked=="function"&&window.setTimeout(function(){r.beans.frameworkOverrides.wrapOutgoing(function(){o.onCellDoubleClicked(i)})},0);var s=!this.beans.gridOptionsService.get("singleClickEdit")&&!this.beans.gridOptionsService.get("suppressClickEdit");s&&this.cellCtrl.startRowOrCellEdit(null,e)},t.prototype.onMouseDown=function(e){var r=e.ctrlKey,o=e.metaKey,i=e.shiftKey,s=e.target,a=this,l=a.cellCtrl,u=a.beans,c=u.eventService,p=u.rangeService,d=u.focusService;if(!this.isRightClickInExistingRange(e)){var h=p&&p.getCellRanges().length!=0;if(!i||!h){var f=ht()&&!l.isEditing()&&!Vn(s);l.focusCell(f)}if(i&&h&&!d.isCellFocused(l.getCellPosition())){e.preventDefault();var y=d.getFocusedCell();if(y){var m=y.column,C=y.rowIndex,w=y.rowPinned,E=u.rowRenderer.getRowByPosition({rowIndex:C,rowPinned:w}),S=E==null?void 0:E.getCellCtrl(m);S!=null&&S.isEditing()&&S.stopEditing(),d.setFocusedCell({column:m,rowIndex:C,rowPinned:w,forceBrowserFocus:!0,preventScrollOnBrowserFocus:!0})}}if(!this.containsWidget(s)){if(p){var R=this.cellCtrl.getCellPosition();if(i)p.extendLatestRangeToCell(R);else{var O=r||o;p.setRangeToCell(R,O)}}c.dispatchEvent(this.cellCtrl.createEvent(e,g.EVENT_CELL_MOUSE_DOWN))}}},t.prototype.isRightClickInExistingRange=function(e){var r=this.beans.rangeService;if(r){var o=r.isCellInAnyRange(this.cellCtrl.getCellPosition()),i=e.button===2||e.ctrlKey&&this.beans.gridOptionsService.get("allowContextMenuWithControlKey");if(o&&i)return!0}return!1},t.prototype.containsWidget=function(e){return or(e,"ag-selection-checkbox",3)},t.prototype.onMouseOut=function(e){if(!this.mouseStayingInsideCell(e)){var r=this.cellCtrl.createEvent(e,g.EVENT_CELL_MOUSE_OUT);this.beans.eventService.dispatchEvent(r),this.beans.columnHoverService.clearMouseOver()}},t.prototype.onMouseOver=function(e){if(!this.mouseStayingInsideCell(e)){var r=this.cellCtrl.createEvent(e,g.EVENT_CELL_MOUSE_OVER);this.beans.eventService.dispatchEvent(r),this.beans.columnHoverService.setMouseOver([this.column])}},t.prototype.mouseStayingInsideCell=function(e){if(!e.target||!e.relatedTarget)return!1;var r=this.cellCtrl.getGui(),o=r.contains(e.target),i=r.contains(e.relatedTarget);return o&&i},t.prototype.destroy=function(){},t}(tu),Wf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),jf=function(n){Wf(t,n);function t(e,r,o,i,s){var a=n.call(this)||this;return a.cellCtrl=e,a.beans=r,a.rowNode=i,a.rowCtrl=s,a}return t.prototype.setComp=function(e){this.eGui=e},t.prototype.onKeyDown=function(e){var r=e.key;switch(r){case _.ENTER:this.onEnterKeyDown(e);break;case _.F2:this.onF2KeyDown(e);break;case _.ESCAPE:this.onEscapeKeyDown(e);break;case _.TAB:this.onTabKeyDown(e);break;case _.BACKSPACE:case _.DELETE:this.onBackspaceOrDeleteKeyDown(r,e);break;case _.DOWN:case _.UP:case _.RIGHT:case _.LEFT:this.onNavigationKeyDown(e,r);break}},t.prototype.onNavigationKeyDown=function(e,r){this.cellCtrl.isEditing()||(e.shiftKey&&this.cellCtrl.isRangeSelectionEnabled()?this.onShiftRangeSelect(e):this.beans.navigationService.navigateToNextCell(e,r,this.cellCtrl.getCellPosition(),!0),e.preventDefault())},t.prototype.onShiftRangeSelect=function(e){if(this.beans.rangeService){var r=this.beans.rangeService.extendLatestRangeInDirection(e);r&&this.beans.navigationService.ensureCellVisible(r)}},t.prototype.onTabKeyDown=function(e){this.beans.navigationService.onTabKeyDown(this.cellCtrl,e)},t.prototype.onBackspaceOrDeleteKeyDown=function(e,r){var o=this,i=o.cellCtrl,s=o.beans,a=o.rowNode,l=s.gridOptionsService,u=s.rangeService,c=s.eventService;i.isEditing()||(c.dispatchEvent({type:g.EVENT_KEY_SHORTCUT_CHANGED_CELL_START}),cl(e,l.get("enableCellEditingOnBackspace"))?u&&l.get("enableRangeSelection")?u.clearCellRangeCellValues({dispatchWrapperEvents:!0,wrapperEventSource:"deleteKey"}):i.isCellEditable()&&a.setDataValue(i.getColumn(),null,"cellClear"):i.startRowOrCellEdit(e,r),c.dispatchEvent({type:g.EVENT_KEY_SHORTCUT_CHANGED_CELL_END}))},t.prototype.onEnterKeyDown=function(e){if(this.cellCtrl.isEditing()||this.rowCtrl.isEditing())this.cellCtrl.stopEditingAndFocus(!1,e.shiftKey);else if(this.beans.gridOptionsService.get("enterNavigatesVertically")){var r=e.shiftKey?_.UP:_.DOWN;this.beans.navigationService.navigateToNextCell(null,r,this.cellCtrl.getCellPosition(),!1)}else this.cellCtrl.startRowOrCellEdit(_.ENTER,e),this.cellCtrl.isEditing()&&e.preventDefault()},t.prototype.onF2KeyDown=function(e){this.cellCtrl.isEditing()||this.cellCtrl.startRowOrCellEdit(_.F2,e)},t.prototype.onEscapeKeyDown=function(e){this.cellCtrl.isEditing()&&(this.cellCtrl.stopRowOrCellEdit(!0),this.cellCtrl.focusCell(!0))},t.prototype.processCharacter=function(e){var r=e.target,o=r!==this.eGui;if(!(o||this.cellCtrl.isEditing())){var i=e.key;i===" "?this.onSpaceKeyDown(e):(this.cellCtrl.startRowOrCellEdit(i,e),e.preventDefault())}},t.prototype.onSpaceKeyDown=function(e){var r=this.beans.gridOptionsService;if(!this.cellCtrl.isEditing()&&r.isRowSelection()){var o=this.rowNode.isSelected(),i=!o;if(i||!r.get("suppressRowDeselection")){var s=this.beans.gridOptionsService.get("groupSelectsFiltered"),a=this.rowNode.setSelectedParams({newValue:i,rangeSelect:e.shiftKey,groupSelectsFiltered:s,event:e,source:"spaceKey"});o===void 0&&a===0&&this.rowNode.setSelectedParams({newValue:!1,rangeSelect:e.shiftKey,groupSelectsFiltered:s,event:e,source:"spaceKey"})}}e.preventDefault()},t.prototype.destroy=function(){n.prototype.destroy.call(this)},t}(D),Uf=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),zf=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Kf=function(n){Uf(t,n);function t(e,r,o){var i=n.call(this,'
')||this;return i.rowNode=e,i.column=r,i.eCell=o,i}return t.prototype.postConstruct=function(){var e=this.getGui();e.appendChild(ne("rowDrag",this.gridOptionsService,null)),this.addGuiEventListener("mousedown",function(r){r.stopPropagation()}),this.addDragSource(),this.checkVisibility()},t.prototype.addDragSource=function(){this.addGuiEventListener("dragstart",this.onDragStart.bind(this))},t.prototype.onDragStart=function(e){var r=this,o=this.column.getColDef().dndSourceOnRowDrag;e.dataTransfer.setDragImage(this.eCell,0,0);var i=function(){try{var a=JSON.stringify(r.rowNode.data);e.dataTransfer.setData("application/json",a),e.dataTransfer.setData("text/plain",a)}catch{}};if(o){var s=this.gridOptionsService.addGridCommonParams({rowNode:this.rowNode,dragEvent:e});o(s)}else i()},t.prototype.checkVisibility=function(){var e=this.column.isDndSource(this.rowNode);this.setDisplayed(e)},zf([F],t.prototype,"postConstruct",null),t}(k),$f=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Yf=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Cs=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Ss=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r=0;return d?i:o}return o},t.prototype.getDomOrder=function(){var e=this.gridOptionsService.get("ensureDomOrder");return e||this.gridOptionsService.isDomLayout("print")},t.prototype.listenOnDomOrder=function(e){var r=this,o=function(){e.rowComp.setDomOrder(r.getDomOrder())};this.addManagedPropertyListener("domLayout",o),this.addManagedPropertyListener("ensureDomOrder",o)},t.prototype.setAnimateFlags=function(e){if(!(this.isSticky()||!e)){var r=P(this.rowNode.oldRowTop),o=this.beans.columnModel.isPinningLeft(),i=this.beans.columnModel.isPinningRight();if(r){if(this.isFullWidth()&&!this.gridOptionsService.get("embedFullWidthRows")){this.slideInAnimation.fullWidth=!0;return}this.slideInAnimation.center=!0,this.slideInAnimation.left=o,this.slideInAnimation.right=i}else{if(this.isFullWidth()&&!this.gridOptionsService.get("embedFullWidthRows")){this.fadeInAnimation.fullWidth=!0;return}this.fadeInAnimation.center=!0,this.fadeInAnimation.left=o,this.fadeInAnimation.right=i}}},t.prototype.isEditing=function(){return this.editingRow},t.prototype.isFullWidth=function(){return this.rowType!==De.Normal},t.prototype.getRowType=function(){return this.rowType},t.prototype.refreshFullWidth=function(){var e=this,r=function(u,c){return u?u.rowComp.refreshFullWidth(function(){return e.createFullWidthParams(u.element,c)}):!0},o=r(this.fullWidthGui,null),i=r(this.centerGui,null),s=r(this.leftGui,"left"),a=r(this.rightGui,"right"),l=o&&i&&s&&a;return l},t.prototype.addListeners=function(){var e=this;this.addManagedListener(this.rowNode,U.EVENT_HEIGHT_CHANGED,function(){return e.onRowHeightChanged()}),this.addManagedListener(this.rowNode,U.EVENT_ROW_SELECTED,function(){return e.onRowSelected()}),this.addManagedListener(this.rowNode,U.EVENT_ROW_INDEX_CHANGED,this.onRowIndexChanged.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_TOP_CHANGED,this.onTopChanged.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_EXPANDED_CHANGED,this.updateExpandedCss.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_HAS_CHILDREN_CHANGED,this.updateExpandedCss.bind(this)),this.rowNode.detail&&this.addManagedListener(this.rowNode.parent,U.EVENT_DATA_CHANGED,this.onRowNodeDataChanged.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_DATA_CHANGED,this.onRowNodeDataChanged.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_CELL_CHANGED,this.postProcessCss.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_HIGHLIGHT_CHANGED,this.onRowNodeHighlightChanged.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_DRAGGING_CHANGED,this.postProcessRowDragging.bind(this)),this.addManagedListener(this.rowNode,U.EVENT_UI_LEVEL_CHANGED,this.onUiLevelChanged.bind(this));var r=this.beans.eventService;this.addManagedListener(r,g.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED,this.onPaginationPixelOffsetChanged.bind(this)),this.addManagedListener(r,g.EVENT_HEIGHT_SCALE_CHANGED,this.onTopChanged.bind(this)),this.addManagedListener(r,g.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.addManagedListener(r,g.EVENT_VIRTUAL_COLUMNS_CHANGED,this.onVirtualColumnsChanged.bind(this)),this.addManagedListener(r,g.EVENT_CELL_FOCUSED,this.onCellFocusChanged.bind(this)),this.addManagedListener(r,g.EVENT_CELL_FOCUS_CLEARED,this.onCellFocusChanged.bind(this)),this.addManagedListener(r,g.EVENT_PAGINATION_CHANGED,this.onPaginationChanged.bind(this)),this.addManagedListener(r,g.EVENT_MODEL_UPDATED,this.refreshFirstAndLastRowStyles.bind(this)),this.addManagedListener(r,g.EVENT_COLUMN_MOVED,this.updateColumnLists.bind(this)),this.addDestroyFunc(function(){e.destroyBeans(e.rowDragComps,e.beans.context)}),this.addManagedPropertyListeners(["rowDragEntireRow"],function(){var o=e.gridOptionsService.get("rowDragEntireRow");if(o){e.allRowGuis.forEach(function(i){e.addRowDraggerToRow(i)});return}e.destroyBeans(e.rowDragComps,e.beans.context),e.rowDragComps=[]}),this.addListenersForCellComps()},t.prototype.addListenersForCellComps=function(){var e=this;this.addManagedListener(this.rowNode,U.EVENT_ROW_INDEX_CHANGED,function(){e.getAllCellCtrls().forEach(function(r){return r.onRowIndexChanged()})}),this.addManagedListener(this.rowNode,U.EVENT_CELL_CHANGED,function(r){e.getAllCellCtrls().forEach(function(o){return o.onCellChanged(r)})})},t.prototype.onRowNodeDataChanged=function(e){var r=this,o=this.isFullWidth()!==!!this.rowNode.isFullWidthCell();if(o){this.beans.rowRenderer.redrawRow(this.rowNode);return}if(this.isFullWidth()){var i=this.refreshFullWidth();i||this.beans.rowRenderer.redrawRow(this.rowNode);return}this.getAllCellCtrls().forEach(function(s){return s.refreshCell({suppressFlash:!e.update,newData:!e.update})}),this.allRowGuis.forEach(function(s){r.setRowCompRowId(s.rowComp),r.updateRowBusinessKey(),r.setRowCompRowBusinessKey(s.rowComp)}),this.onRowSelected(),this.postProcessCss()},t.prototype.postProcessCss=function(){this.setStylesFromGridOptions(!0),this.postProcessClassesFromGridOptions(),this.postProcessRowClassRules(),this.postProcessRowDragging()},t.prototype.onRowNodeHighlightChanged=function(){var e=this.rowNode.highlighted;this.allRowGuis.forEach(function(r){var o=e===et.Above,i=e===et.Below;r.rowComp.addOrRemoveCssClass("ag-row-highlight-above",o),r.rowComp.addOrRemoveCssClass("ag-row-highlight-below",i)})},t.prototype.postProcessRowDragging=function(){var e=this.rowNode.dragging;this.allRowGuis.forEach(function(r){return r.rowComp.addOrRemoveCssClass("ag-row-dragging",e)})},t.prototype.updateExpandedCss=function(){var e=this.rowNode.isExpandable(),r=this.rowNode.expanded==!0;this.allRowGuis.forEach(function(o){o.rowComp.addOrRemoveCssClass("ag-row-group",e),o.rowComp.addOrRemoveCssClass("ag-row-group-expanded",e&&r),o.rowComp.addOrRemoveCssClass("ag-row-group-contracted",e&&!r),Pt(o.element,e&&r)})},t.prototype.onDisplayedColumnsChanged=function(){this.updateColumnLists(!0),this.beans.columnModel.wasAutoRowHeightEverActive()&&this.rowNode.checkAutoHeights()},t.prototype.onVirtualColumnsChanged=function(){this.updateColumnLists(!1,!0)},t.prototype.getRowPosition=function(){return{rowPinned:ct(this.rowNode.rowPinned),rowIndex:this.rowNode.rowIndex}},t.prototype.onKeyboardNavigate=function(e){var r=this.allRowGuis.find(function(u){return u.element.contains(e.target)}),o=r?r.element:null,i=o===e.target;if(i){var s=this.rowNode,a=this.beans.focusService.getFocusedCell(),l={rowIndex:s.rowIndex,rowPinned:s.rowPinned,column:a&&a.column};this.beans.navigationService.navigateToNextCell(e,e.key,l,!0),e.preventDefault()}},t.prototype.onTabKeyDown=function(e){if(!(e.defaultPrevented||nt(e))){var r=this.allRowGuis.find(function(a){return a.element.contains(e.target)}),o=r?r.element:null,i=o===e.target,s=null;i||(s=this.beans.focusService.findNextFocusableElement(o,!1,e.shiftKey)),(this.isFullWidth()&&i||!s)&&this.beans.navigationService.onTabKeyDown(this,e)}},t.prototype.onFullWidthRowFocused=function(e){var r,o=this.rowNode,i=e?this.isFullWidth()&&e.rowIndex===o.rowIndex&&e.rowPinned==o.rowPinned:!1,s=this.fullWidthGui?this.fullWidthGui.element:(r=this.centerGui)===null||r===void 0?void 0:r.element;s&&(s.classList.toggle("ag-full-width-focus",i),i&&s.focus({preventScroll:!0}))},t.prototype.refreshCell=function(e){this.centerCellCtrls=this.removeCellCtrl(this.centerCellCtrls,e),this.leftCellCtrls=this.removeCellCtrl(this.leftCellCtrls,e),this.rightCellCtrls=this.removeCellCtrl(this.rightCellCtrls,e),this.updateColumnLists()},t.prototype.removeCellCtrl=function(e,r){var o={list:[],map:{}};return e.list.forEach(function(i){i!==r&&(o.list.push(i),o.map[i.getInstanceId()]=i)}),o},t.prototype.onMouseEvent=function(e,r){switch(e){case"dblclick":this.onRowDblClick(r);break;case"click":this.onRowClick(r);break;case"touchstart":case"mousedown":this.onRowMouseDown(r);break}},t.prototype.createRowEvent=function(e,r){return this.gridOptionsService.addGridCommonParams({type:e,node:this.rowNode,data:this.rowNode.data,rowIndex:this.rowNode.rowIndex,rowPinned:this.rowNode.rowPinned,event:r})},t.prototype.createRowEventWithSource=function(e,r){var o=this.createRowEvent(e,r);return o.source=this,o},t.prototype.onRowDblClick=function(e){if(!nt(e)){var r=this.createRowEventWithSource(g.EVENT_ROW_DOUBLE_CLICKED,e);this.beans.eventService.dispatchEvent(r)}},t.prototype.onRowMouseDown=function(e){if(this.lastMouseDownOnDragger=or(e.target,"ag-row-drag",3),!!this.isFullWidth()){var r=this.rowNode,o=this.beans.columnModel;this.beans.rangeService&&this.beans.rangeService.removeAllCellRanges(),this.beans.focusService.setFocusedCell({rowIndex:r.rowIndex,column:o.getAllDisplayedColumns()[0],rowPinned:r.rowPinned,forceBrowserFocus:!0})}},t.prototype.onRowClick=function(e){var r=nt(e)||this.lastMouseDownOnDragger;if(!r){var o=this.createRowEventWithSource(g.EVENT_ROW_CLICKED,e);this.beans.eventService.dispatchEvent(o);var i=e.ctrlKey||e.metaKey,s=e.shiftKey,a=this.gridOptionsService.get("groupSelectsChildren");if(!(a&&this.rowNode.group||this.isRowSelectionBlocked()||this.gridOptionsService.get("suppressRowClickSelection"))){var l=this.gridOptionsService.get("rowMultiSelectWithClick"),u=!this.gridOptionsService.get("suppressRowDeselection"),c="rowClicked";if(this.rowNode.isSelected())l?this.rowNode.setSelectedParams({newValue:!1,event:e,source:c}):i?u&&this.rowNode.setSelectedParams({newValue:!1,event:e,source:c}):this.rowNode.setSelectedParams({newValue:!0,clearSelection:!s,rangeSelect:s,event:e,source:c});else{var p=l?!1:!i;this.rowNode.setSelectedParams({newValue:!0,clearSelection:p,rangeSelect:s,event:e,source:c})}}}},t.prototype.isRowSelectionBlocked=function(){return!this.rowNode.selectable||!!this.rowNode.rowPinned||!this.gridOptionsService.isRowSelection()},t.prototype.setupDetailRowAutoHeight=function(e){var r=this;if(this.rowType===De.FullWidthDetail&&this.gridOptionsService.get("detailRowAutoHeight")){var o=function(){var s=e.clientHeight;if(s!=null&&s>0){var a=function(){r.rowNode.setRowHeight(s),r.beans.clientSideRowModel?r.beans.clientSideRowModel.onRowHeightChanged():r.beans.serverSideRowModel&&r.beans.serverSideRowModel.onRowHeightChanged()};window.setTimeout(a,0)}},i=this.beans.resizeObserverService.observeResize(e,o);this.addDestroyFunc(i),o()}},t.prototype.createFullWidthParams=function(e,r){var o=this,i=this.gridOptionsService.addGridCommonParams({fullWidth:!0,data:this.rowNode.data,node:this.rowNode,value:this.rowNode.key,valueFormatted:this.rowNode.key,rowIndex:this.rowNode.rowIndex,eGridCell:e,eParentOfValue:e,pinned:r,addRenderedRowListener:this.addEventListener.bind(this),registerRowDragger:function(s,a,l,u){return o.addFullWidthRowDragging(s,a,l,u)}});return i},t.prototype.addFullWidthRowDragging=function(e,r,o,i){if(o===void 0&&(o=""),!!this.isFullWidth()){var s=new ai(function(){return o},this.rowNode,void 0,e,r,i);this.createManagedBean(s,this.beans.context)}},t.prototype.onUiLevelChanged=function(){var e=this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);if(this.rowLevel!=e){var r="ag-row-level-"+e,o="ag-row-level-"+this.rowLevel;this.allRowGuis.forEach(function(i){i.rowComp.addOrRemoveCssClass(r,!0),i.rowComp.addOrRemoveCssClass(o,!1)})}this.rowLevel=e},t.prototype.isFirstRowOnPage=function(){return this.rowNode.rowIndex===this.beans.paginationProxy.getPageFirstRow()},t.prototype.isLastRowOnPage=function(){return this.rowNode.rowIndex===this.beans.paginationProxy.getPageLastRow()},t.prototype.refreshFirstAndLastRowStyles=function(){var e=this.isFirstRowOnPage(),r=this.isLastRowOnPage();this.firstRowOnPage!==e&&(this.firstRowOnPage=e,this.allRowGuis.forEach(function(o){return o.rowComp.addOrRemoveCssClass("ag-row-first",e)})),this.lastRowOnPage!==r&&(this.lastRowOnPage=r,this.allRowGuis.forEach(function(o){return o.rowComp.addOrRemoveCssClass("ag-row-last",r)}))},t.prototype.stopEditing=function(e){var r,o;if(e===void 0&&(e=!1),!this.stoppingRowEdit){var i=this.getAllCellCtrls(),s=this.editingRow;this.stoppingRowEdit=!0;var a=!1;try{for(var l=uv(i),u=l.next();!u.done;u=l.next()){var c=u.value,p=c.stopEditing(e);s&&!e&&!a&&p&&(a=!0)}}catch(h){r={error:h}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}if(a){var d=this.createRowEvent(g.EVENT_ROW_VALUE_CHANGED);this.beans.eventService.dispatchEvent(d)}s&&this.setEditingRow(!1),this.stoppingRowEdit=!1}},t.prototype.setInlineEditingCss=function(e){this.allRowGuis.forEach(function(r){r.rowComp.addOrRemoveCssClass("ag-row-inline-editing",e),r.rowComp.addOrRemoveCssClass("ag-row-not-inline-editing",!e)})},t.prototype.setEditingRow=function(e){this.editingRow=e,this.allRowGuis.forEach(function(o){return o.rowComp.addOrRemoveCssClass("ag-row-editing",e)});var r=e?this.createRowEvent(g.EVENT_ROW_EDITING_STARTED):this.createRowEvent(g.EVENT_ROW_EDITING_STOPPED);this.beans.eventService.dispatchEvent(r)},t.prototype.startRowEditing=function(e,r,o){if(e===void 0&&(e=null),r===void 0&&(r=null),o===void 0&&(o=null),!this.editingRow){var i=this.getAllCellCtrls().reduce(function(s,a){var l=a===r;return l?a.startEditing(e,l,o):a.startEditing(null,l,o),s?!0:a.isEditing()},!1);i&&this.setEditingRow(!0)}},t.prototype.getAllCellCtrls=function(){if(this.leftCellCtrls.list.length===0&&this.rightCellCtrls.list.length===0)return this.centerCellCtrls.list;var e=Ss(Ss(Ss([],Cs(this.centerCellCtrls.list),!1),Cs(this.leftCellCtrls.list),!1),Cs(this.rightCellCtrls.list),!1);return e},t.prototype.postProcessClassesFromGridOptions=function(){var e=this,r=this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode);!r||!r.length||r.forEach(function(o){e.allRowGuis.forEach(function(i){return i.rowComp.addOrRemoveCssClass(o,!0)})})},t.prototype.postProcessRowClassRules=function(){var e=this;this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode,function(r){e.allRowGuis.forEach(function(o){return o.rowComp.addOrRemoveCssClass(r,!0)})},function(r){e.allRowGuis.forEach(function(o){return o.rowComp.addOrRemoveCssClass(r,!1)})})},t.prototype.setStylesFromGridOptions=function(e,r){var o=this;e&&(this.rowStyles=this.processStylesFromGridOptions()),this.forEachGui(r,function(i){return i.rowComp.setUserStyles(o.rowStyles)})},t.prototype.getPinnedForContainer=function(e){var r=e===fe.LEFT?"left":e===fe.RIGHT?"right":null;return r},t.prototype.getInitialRowClasses=function(e){var r=this.getPinnedForContainer(e),o={rowNode:this.rowNode,rowFocused:this.rowFocused,fadeRowIn:this.fadeInAnimation[e],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:r};return this.beans.rowCssClassCalculator.getInitialRowClasses(o)},t.prototype.processStylesFromGridOptions=function(){var e=this.gridOptionsService.get("rowStyle");if(e&&typeof e=="function"){console.warn("AG Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead");return}var r=this.gridOptionsService.getCallback("getRowStyle"),o;if(r){var i={data:this.rowNode.data,node:this.rowNode,rowIndex:this.rowNode.rowIndex};o=r(i)}return o||e?Object.assign({},e,o):this.emptyStyle},t.prototype.onRowSelected=function(e){var r=this,o=this.beans.gridOptionsService.getDocument(),i=!!this.rowNode.isSelected();this.forEachGui(e,function(s){s.rowComp.addOrRemoveCssClass("ag-row-selected",i),Rr(s.element,i);var a=s.element.contains(o.activeElement);a&&(s===r.centerGui||s===r.fullWidthGui)&&r.announceDescription()})},t.prototype.announceDescription=function(){if(!this.isRowSelectionBlocked()){var e=this.rowNode.isSelected();if(!(e&&this.beans.gridOptionsService.get("suppressRowDeselection"))){var r=this.beans.localeService.getLocaleTextFunc(),o=r(e?"ariaRowDeselect":"ariaRowSelect","Press SPACE to ".concat(e?"deselect":"select"," this row."));this.beans.ariaAnnouncementService.announceValue(o)}}},t.prototype.isUseAnimationFrameForCreate=function(){return this.useAnimationFrameForCreate},t.prototype.addHoverFunctionality=function(e){var r=this;this.active&&(this.addManagedListener(e,"mouseenter",function(){return r.rowNode.onMouseEnter()}),this.addManagedListener(e,"mouseleave",function(){return r.rowNode.onMouseLeave()}),this.addManagedListener(this.rowNode,U.EVENT_MOUSE_ENTER,function(){!r.beans.dragService.isDragging()&&!r.gridOptionsService.get("suppressRowHoverHighlight")&&(e.classList.add("ag-row-hover"),r.rowNode.setHovered(!0))}),this.addManagedListener(this.rowNode,U.EVENT_MOUSE_LEAVE,function(){e.classList.remove("ag-row-hover"),r.rowNode.setHovered(!1)}))},t.prototype.roundRowTopToBounds=function(e){var r=this.beans.ctrlsService.getGridBodyCtrl().getScrollFeature().getApproximateVScollPosition(),o=this.applyPaginationOffset(r.top,!0)-100,i=this.applyPaginationOffset(r.bottom,!0)+100;return Math.min(Math.max(o,e),i)},t.prototype.getFrameworkOverrides=function(){return this.beans.frameworkOverrides},t.prototype.forEachGui=function(e,r){e?r(e):this.allRowGuis.forEach(r)},t.prototype.onRowHeightChanged=function(e){if(this.rowNode.rowHeight!=null){var r=this.rowNode.rowHeight,o=this.beans.environment.getDefaultRowHeight(),i=this.gridOptionsService.isGetRowHeightFunction(),s=i?this.gridOptionsService.getRowHeightForNode(this.rowNode).height:void 0,a=s?"".concat(Math.min(o,s)-2,"px"):void 0;this.forEachGui(e,function(l){l.element.style.height="".concat(r,"px"),a&&l.element.style.setProperty("--ag-line-height",a)})}},t.prototype.addEventListener=function(e,r){n.prototype.addEventListener.call(this,e,r)},t.prototype.removeEventListener=function(e,r){n.prototype.removeEventListener.call(this,e,r)},t.prototype.destroyFirstPass=function(e){if(e===void 0&&(e=!1),this.active=!1,!e&&this.gridOptionsService.isAnimateRows()&&!this.isSticky()){var r=this.rowNode.rowTop!=null;if(r){var o=this.roundRowTopToBounds(this.rowNode.rowTop);this.setRowTop(o)}else this.allRowGuis.forEach(function(s){return s.rowComp.addOrRemoveCssClass("ag-opacity-zero",!0)})}this.rowNode.setHovered(!1);var i=this.createRowEvent(g.EVENT_VIRTUAL_ROW_REMOVED);this.dispatchEvent(i),this.beans.eventService.dispatchEvent(i),n.prototype.destroy.call(this)},t.prototype.destroySecondPass=function(){this.allRowGuis.length=0,this.stopEditing();var e=function(r){return r.list.forEach(function(o){return o.destroy()}),{list:[],map:{}}};this.centerCellCtrls=e(this.centerCellCtrls),this.leftCellCtrls=e(this.leftCellCtrls),this.rightCellCtrls=e(this.rightCellCtrls)},t.prototype.setFocusedClasses=function(e){var r=this;this.forEachGui(e,function(o){o.rowComp.addOrRemoveCssClass("ag-row-focus",r.rowFocused),o.rowComp.addOrRemoveCssClass("ag-row-no-focus",!r.rowFocused)})},t.prototype.onCellFocusChanged=function(){var e=this.beans.focusService.isRowFocused(this.rowNode.rowIndex,this.rowNode.rowPinned);e!==this.rowFocused&&(this.rowFocused=e,this.setFocusedClasses()),!e&&this.editingRow&&this.stopEditing(!1)},t.prototype.onPaginationChanged=function(){var e=this.beans.paginationProxy.getCurrentPage();this.paginationPage!==e&&(this.paginationPage=e,this.onTopChanged()),this.refreshFirstAndLastRowStyles()},t.prototype.onTopChanged=function(){this.setRowTop(this.rowNode.rowTop)},t.prototype.onPaginationPixelOffsetChanged=function(){this.onTopChanged()},t.prototype.applyPaginationOffset=function(e,r){if(r===void 0&&(r=!1),this.rowNode.isRowPinned()||this.rowNode.sticky)return e;var o=this.beans.paginationProxy.getPixelOffset(),i=r?1:-1;return e+o*i},t.prototype.setRowTop=function(e){if(!this.printLayout&&P(e)){var r=this.applyPaginationOffset(e),o=this.rowNode.isRowPinned()||this.rowNode.sticky,i=o?r:this.beans.rowContainerHeightService.getRealPixelPosition(r),s="".concat(i,"px");this.setRowTopStyle(s)}},t.prototype.getInitialRowTop=function(e){return this.suppressRowTransform?this.getInitialRowTopShared(e):void 0},t.prototype.getInitialTransform=function(e){return this.suppressRowTransform?void 0:"translateY(".concat(this.getInitialRowTopShared(e),")")},t.prototype.getInitialRowTopShared=function(e){if(this.printLayout)return"";var r;if(this.isSticky())r=this.rowNode.stickyRowTop;else{var o=this.slideInAnimation[e]?this.roundRowTopToBounds(this.rowNode.oldRowTop):this.rowNode.rowTop,i=this.applyPaginationOffset(o);r=this.rowNode.isRowPinned()?i:this.beans.rowContainerHeightService.getRealPixelPosition(i)}return r+"px"},t.prototype.setRowTopStyle=function(e){var r=this;this.allRowGuis.forEach(function(o){return r.suppressRowTransform?o.rowComp.setTop(e):o.rowComp.setTransform("translateY(".concat(e,")"))})},t.prototype.getRowNode=function(){return this.rowNode},t.prototype.getCellCtrl=function(e){var r=null;return this.getAllCellCtrls().forEach(function(o){o.getColumn()==e&&(r=o)}),r!=null||this.getAllCellCtrls().forEach(function(o){o.getColSpanningList().indexOf(e)>=0&&(r=o)}),r},t.prototype.onRowIndexChanged=function(){this.rowNode.rowIndex!=null&&(this.onCellFocusChanged(),this.updateRowIndexes(),this.postProcessCss())},t.prototype.getRowIndex=function(){return this.rowNode.getRowIndexString()},t.prototype.updateRowIndexes=function(e){var r=this.rowNode.getRowIndexString(),o=this.beans.headerNavigationService.getHeaderRowCount()+this.beans.filterManager.getHeaderRowCount(),i=this.rowNode.rowIndex%2===0,s=o+this.rowNode.rowIndex+1;this.forEachGui(e,function(a){a.rowComp.setRowIndex(r),a.rowComp.addOrRemoveCssClass("ag-row-even",i),a.rowComp.addOrRemoveCssClass("ag-row-odd",!i),yn(a.element,s)})},t.DOM_DATA_KEY_ROW_CTRL="renderedRow",t}(D),pv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ze=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},dv=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},hv=function(n){pv(t,n);function t(e){var r=n.call(this)||this;return r.element=e,r}return t.prototype.postConstruct=function(){this.addKeyboardListeners(),this.addMouseListeners(),this.mockContextMenuForIPad()},t.prototype.addKeyboardListeners=function(){var e="keydown",r=this.processKeyboardEvent.bind(this,e);this.addManagedListener(this.element,e,r)},t.prototype.addMouseListeners=function(){var e=this,r=an("touchstart")?"touchstart":"mousedown",o=["dblclick","contextmenu","mouseover","mouseout","click",r];o.forEach(function(i){var s=e.processMouseEvent.bind(e,i);e.addManagedListener(e.element,i,s)})},t.prototype.processMouseEvent=function(e,r){if(!(!this.mouseEventService.isEventFromThisGrid(r)||nt(r))){var o=this.getRowForEvent(r),i=this.mouseEventService.getRenderedCellForEvent(r);e==="contextmenu"?this.handleContextMenuMouseEvent(r,void 0,o,i):(i&&i.onMouseEvent(e,r),o&&o.onMouseEvent(e,r))}},t.prototype.mockContextMenuForIPad=function(){var e=this;if(Dt()){var r=new me(this.element),o=function(i){var s=e.getRowForEvent(i.touchEvent),a=e.mouseEventService.getRenderedCellForEvent(i.touchEvent);e.handleContextMenuMouseEvent(void 0,i.touchEvent,s,a)};this.addManagedListener(r,me.EVENT_LONG_TAP,o),this.addDestroyFunc(function(){return r.destroy()})}},t.prototype.getRowForEvent=function(e){for(var r=e.target;r;){var o=this.gridOptionsService.getDomData(r,fr.DOM_DATA_KEY_ROW_CTRL);if(o)return o;r=r.parentElement}return null},t.prototype.handleContextMenuMouseEvent=function(e,r,o,i){var s=o?o.getRowNode():null,a=i?i.getColumn():null,l=null;if(a){var u=e||r;i.dispatchCellContextMenuEvent(u??null),l=this.valueService.getValue(a,s)}var c=this.ctrlsService.getGridBodyCtrl(),p=i?i.getGui():c.getGridBodyElement();this.menuService.showContextMenu({mouseEvent:e,touchEvent:r,rowNode:s,column:a,value:l,anchorToElement:p})},t.prototype.getControlsForEventTarget=function(e){return{cellCtrl:ko(this.gridOptionsService,e,hr.DOM_DATA_KEY_CELL_CTRL),rowCtrl:ko(this.gridOptionsService,e,fr.DOM_DATA_KEY_ROW_CTRL)}},t.prototype.processKeyboardEvent=function(e,r){var o=this.getControlsForEventTarget(r.target),i=o.cellCtrl,s=o.rowCtrl;r.defaultPrevented||(i?this.processCellKeyboardEvent(i,e,r):s&&s.isFullWidth()&&this.processFullWidthRowKeyboardEvent(s,e,r))},t.prototype.processCellKeyboardEvent=function(e,r,o){var i=e.getRowNode(),s=e.getColumn(),a=e.isEditing(),l=!Jo(this.gridOptionsService,o,i,s,a);if(l&&r==="keydown"){var u=!a&&this.navigationService.handlePageScrollingKey(o);u||e.onKeyDown(o),this.doGridOperations(o,e.isEditing()),Xo(o)&&e.processCharacter(o)}if(r==="keydown"){var c=e.createEvent(o,g.EVENT_CELL_KEY_DOWN);this.eventService.dispatchEvent(c)}},t.prototype.processFullWidthRowKeyboardEvent=function(e,r,o){var i=e.getRowNode(),s=this.focusService.getFocusedCell(),a=s&&s.column,l=!Jo(this.gridOptionsService,o,i,a,!1);if(l){var u=o.key;if(r==="keydown")switch(u){case _.PAGE_HOME:case _.PAGE_END:case _.PAGE_UP:case _.PAGE_DOWN:this.navigationService.handlePageScrollingKey(o,!0);break;case _.UP:case _.DOWN:e.onKeyboardNavigate(o);break;case _.TAB:e.onTabKeyDown(o);break}}if(r==="keydown"){var c=e.createRowEvent(g.EVENT_CELL_KEY_DOWN,o);this.eventService.dispatchEvent(c)}},t.prototype.doGridOperations=function(e,r){if(!(!e.ctrlKey&&!e.metaKey)&&!r&&this.mouseEventService.isEventFromThisGrid(e)){var o=ul(e);if(o===_.A)return this.onCtrlAndA(e);if(o===_.C)return this.onCtrlAndC(e);if(o===_.D)return this.onCtrlAndD(e);if(o===_.V)return this.onCtrlAndV(e);if(o===_.X)return this.onCtrlAndX(e);if(o===_.Y)return this.onCtrlAndY();if(o===_.Z)return this.onCtrlAndZ(e)}},t.prototype.onCtrlAndA=function(e){var r=this,o=r.pinnedRowModel,i=r.paginationProxy,s=r.rangeService;if(s&&i.isRowsToRender()){var a=dv([o.isEmpty("top"),o.isEmpty("bottom")],2),l=a[0],u=a[1],c=l?null:"top",p=void 0,d=void 0;u?(p=null,d=this.paginationProxy.getRowCount()-1):(p="bottom",d=o.getPinnedBottomRowData().length-1);var h=this.columnModel.getAllDisplayedColumns();if(Ge(h))return;s.setCellRange({rowStartIndex:0,rowStartPinned:c,rowEndIndex:d,rowEndPinned:p,columnStart:h[0],columnEnd:q(h)})}e.preventDefault()},t.prototype.onCtrlAndC=function(e){if(!(!this.clipboardService||this.gridOptionsService.get("enableCellTextSelection"))){var r=this.getControlsForEventTarget(e.target),o=r.cellCtrl,i=r.rowCtrl;o!=null&&o.isEditing()||i!=null&&i.isEditing()||(e.preventDefault(),this.clipboardService.copyToClipboard())}},t.prototype.onCtrlAndX=function(e){if(!(!this.clipboardService||this.gridOptionsService.get("enableCellTextSelection")||this.gridOptionsService.get("suppressCutToClipboard"))){var r=this.getControlsForEventTarget(e.target),o=r.cellCtrl,i=r.rowCtrl;o!=null&&o.isEditing()||i!=null&&i.isEditing()||(e.preventDefault(),this.clipboardService.cutToClipboard(void 0,"ui"))}},t.prototype.onCtrlAndV=function(e){var r=this.getControlsForEventTarget(e.target),o=r.cellCtrl,i=r.rowCtrl;o!=null&&o.isEditing()||i!=null&&i.isEditing()||this.clipboardService&&!this.gridOptionsService.get("suppressClipboardPaste")&&this.clipboardService.pasteFromClipboard()},t.prototype.onCtrlAndD=function(e){this.clipboardService&&!this.gridOptionsService.get("suppressClipboardPaste")&&this.clipboardService.copyRangeDown(),e.preventDefault()},t.prototype.onCtrlAndZ=function(e){this.gridOptionsService.get("undoRedoCellEditing")&&(e.preventDefault(),e.shiftKey?this.undoRedoService.redo("ui"):this.undoRedoService.undo("ui"))},t.prototype.onCtrlAndY=function(){this.undoRedoService.redo("ui")},ze([v("mouseEventService")],t.prototype,"mouseEventService",void 0),ze([v("valueService")],t.prototype,"valueService",void 0),ze([v("menuService")],t.prototype,"menuService",void 0),ze([v("ctrlsService")],t.prototype,"ctrlsService",void 0),ze([v("navigationService")],t.prototype,"navigationService",void 0),ze([v("focusService")],t.prototype,"focusService",void 0),ze([v("undoRedoService")],t.prototype,"undoRedoService",void 0),ze([v("columnModel")],t.prototype,"columnModel",void 0),ze([v("paginationProxy")],t.prototype,"paginationProxy",void 0),ze([v("pinnedRowModel")],t.prototype,"pinnedRowModel",void 0),ze([Y("rangeService")],t.prototype,"rangeService",void 0),ze([Y("clipboardService")],t.prototype,"clipboardService",void 0),ze([F],t.prototype,"postConstruct",null),t}(D),fv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),co=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},ru=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},ou=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r0;){if(l0){var h=s[u++];d-=h.getActualWidth(),p.push(h)}}return p},t.prototype.checkViewportAndScrolls=function(){this.updateScrollVisibleService(),this.checkBodyHeight(),this.onHorizontalViewportChanged(),this.gridBodyCtrl.getScrollFeature().checkScrollLeft()},t.prototype.getBodyHeight=function(){return this.bodyHeight},t.prototype.checkBodyHeight=function(){var e=this.gridBodyCtrl.getBodyViewportElement(),r=qr(e);if(this.bodyHeight!==r){this.bodyHeight=r;var o={type:g.EVENT_BODY_HEIGHT_CHANGED};this.eventService.dispatchEvent(o)}},t.prototype.updateScrollVisibleService=function(){this.updateScrollVisibleServiceImpl(),setTimeout(this.updateScrollVisibleServiceImpl.bind(this),500)},t.prototype.updateScrollVisibleServiceImpl=function(){var e={horizontalScrollShowing:this.isHorizontalScrollShowing(),verticalScrollShowing:this.gridBodyCtrl.isVerticalScrollShowing()};this.scrollVisibleService.setScrollsVisible(e)},t.prototype.isHorizontalScrollShowing=function(){return this.centerContainerCtrl.isHorizontalScrollShowing()},t.prototype.onHorizontalViewportChanged=function(){var e=this.centerContainerCtrl.getCenterWidth(),r=this.centerContainerCtrl.getViewportScrollLeft();this.columnModel.setViewportPosition(e,r)},co([v("ctrlsService")],t.prototype,"ctrlsService",void 0),co([v("pinnedWidthService")],t.prototype,"pinnedWidthService",void 0),co([v("columnModel")],t.prototype,"columnModel",void 0),co([v("scrollVisibleService")],t.prototype,"scrollVisibleService",void 0),co([F],t.prototype,"postConstruct",null),t}(D),gv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),iu=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},yv=function(n){gv(t,n);function t(e){var r=n.call(this)||this;return r.element=e,r}return t.prototype.postConstruct=function(){this.addManagedListener(this.eventService,g.EVENT_LEFT_PINNED_WIDTH_CHANGED,this.onPinnedLeftWidthChanged.bind(this))},t.prototype.onPinnedLeftWidthChanged=function(){var e=this.pinnedWidthService.getPinnedLeftWidth(),r=e>0;$(this.element,r),Je(this.element,e)},t.prototype.getWidth=function(){return this.pinnedWidthService.getPinnedLeftWidth()},iu([v("pinnedWidthService")],t.prototype,"pinnedWidthService",void 0),iu([F],t.prototype,"postConstruct",null),t}(D),mv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),nu=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Cv=function(n){mv(t,n);function t(e){var r=n.call(this)||this;return r.element=e,r}return t.prototype.postConstruct=function(){this.addManagedListener(this.eventService,g.EVENT_RIGHT_PINNED_WIDTH_CHANGED,this.onPinnedRightWidthChanged.bind(this))},t.prototype.onPinnedRightWidthChanged=function(){var e=this.pinnedWidthService.getPinnedRightWidth(),r=e>0;$(this.element,r),Je(this.element,e)},t.prototype.getWidth=function(){return this.pinnedWidthService.getPinnedRightWidth()},nu([v("pinnedWidthService")],t.prototype,"pinnedWidthService",void 0),nu([F],t.prototype,"postConstruct",null),t}(D),Sv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),su=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},au=function(n){Sv(t,n);function t(e,r){var o=n.call(this)||this;return o.eContainer=e,o.eViewport=r,o}return t.prototype.postConstruct=function(){this.addManagedListener(this.eventService,g.EVENT_ROW_CONTAINER_HEIGHT_CHANGED,this.onHeightChanged.bind(this))},t.prototype.onHeightChanged=function(){var e=this.maxDivHeightScaler.getUiContainerHeight(),r=e!=null?"".concat(e,"px"):"";this.eContainer.style.height=r,this.eViewport&&(this.eViewport.style.height=r)},su([v("rowContainerHeightService")],t.prototype,"maxDivHeightScaler",void 0),su([F],t.prototype,"postConstruct",null),t}(D),wv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ws=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Ev=function(n){wv(t,n);function t(e){var r=n.call(this)||this;return r.eContainer=e,r}return t.prototype.postConstruct=function(){var e=this;if(!H(this.rangeService)){this.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.addManagedPropertyListener("enableRangeSelection",function(o){var i=o.currentValue;if(i){e.enableFeature();return}e.disableFeature()}),this.addDestroyFunc(function(){return e.disableFeature()});var r=this.gridOptionsService.get("enableRangeSelection");r&&this.enableFeature()}},t.prototype.enableFeature=function(){this.dragService.addDragSource(this.params)},t.prototype.disableFeature=function(){this.dragService.removeDragSource(this.params)},ws([Y("rangeService")],t.prototype,"rangeService",void 0),ws([v("dragService")],t.prototype,"dragService",void 0),ws([F],t.prototype,"postConstruct",null),t}(D),_v=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Es=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},_s=function(n){_v(t,n);function t(e,r){r===void 0&&(r=!1);var o=n.call(this)||this;return o.callback=e,o.addSpacer=r,o}return t.prototype.postConstruct=function(){var e=this.setWidth.bind(this);this.addManagedPropertyListener("domLayout",e),this.addManagedListener(this.eventService,g.EVENT_COLUMN_CONTAINER_WIDTH_CHANGED,e),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,e),this.addManagedListener(this.eventService,g.EVENT_LEFT_PINNED_WIDTH_CHANGED,e),this.addSpacer&&(this.addManagedListener(this.eventService,g.EVENT_RIGHT_PINNED_WIDTH_CHANGED,e),this.addManagedListener(this.eventService,g.EVENT_SCROLL_VISIBILITY_CHANGED,e),this.addManagedListener(this.eventService,g.EVENT_SCROLLBAR_WIDTH_CHANGED,e)),this.setWidth()},t.prototype.setWidth=function(){var e=this.columnModel,r=this.gridOptionsService.isDomLayout("print"),o=e.getBodyContainerWidth(),i=e.getDisplayedColumnsLeftWidth(),s=e.getDisplayedColumnsRightWidth(),a;if(r)a=o+i+s;else if(a=o,this.addSpacer){var l=this.gridOptionsService.get("enableRtl")?i:s;l===0&&this.scrollVisibleService.isVerticalScrollShowing()&&(a+=this.gridOptionsService.getScrollbarWidth())}this.callback(a)},Es([v("columnModel")],t.prototype,"columnModel",void 0),Es([v("scrollVisibleService")],t.prototype,"scrollVisibleService",void 0),Es([F],t.prototype,"postConstruct",null),t}(D),Rv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),xr=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},vi=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},gi=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r=0&&r()},t.prototype.getContainerElement=function(){return this.eContainer},t.prototype.getViewportSizeFeature=function(){return this.viewportSizeFeature},t.prototype.setComp=function(e,r,o){var i=this;this.comp=e,this.eContainer=r,this.eViewport=o,this.createManagedBean(new hv(this.eContainer)),this.addPreventScrollWhileDragging(),this.listenOnDomOrder(),this.stopHScrollOnPinnedRows();var s=[T.TOP_CENTER,T.TOP_LEFT,T.TOP_RIGHT],a=[T.STICKY_TOP_CENTER,T.STICKY_TOP_LEFT,T.STICKY_TOP_RIGHT],l=[T.BOTTOM_CENTER,T.BOTTOM_LEFT,T.BOTTOM_RIGHT],u=[T.CENTER,T.LEFT,T.RIGHT],c=gi(gi(gi(gi([],vi(s),!1),vi(l),!1),vi(u),!1),vi(a),!1),p=[T.CENTER,T.LEFT,T.RIGHT,T.FULL_WIDTH],d=[T.CENTER,T.TOP_CENTER,T.STICKY_TOP_CENTER,T.BOTTOM_CENTER],h=[T.LEFT,T.BOTTOM_LEFT,T.TOP_LEFT,T.STICKY_TOP_LEFT],f=[T.RIGHT,T.BOTTOM_RIGHT,T.TOP_RIGHT,T.STICKY_TOP_RIGHT];this.forContainers(h,function(){i.pinnedWidthFeature=i.createManagedBean(new yv(i.eContainer)),i.addManagedListener(i.eventService,g.EVENT_LEFT_PINNED_WIDTH_CHANGED,function(){return i.onPinnedWidthChanged()})}),this.forContainers(f,function(){i.pinnedWidthFeature=i.createManagedBean(new Cv(i.eContainer)),i.addManagedListener(i.eventService,g.EVENT_RIGHT_PINNED_WIDTH_CHANGED,function(){return i.onPinnedWidthChanged()})}),this.forContainers(p,function(){return i.createManagedBean(new au(i.eContainer,i.name===T.CENTER?o:void 0))}),this.forContainers(c,function(){return i.createManagedBean(new Ev(i.eContainer))}),this.forContainers(d,function(){return i.createManagedBean(new _s(function(y){return i.comp.setContainerWidth("".concat(y,"px"))}))}),this.addListeners(),this.registerWithCtrlsService()},t.prototype.addListeners=function(){var e=this;this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,function(){return e.onDisplayedColumnsChanged()}),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,function(){return e.onDisplayedColumnsWidthChanged()}),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_ROWS_CHANGED,function(r){return e.onDisplayedRowsChanged(r.afterScroll)}),this.onDisplayedColumnsChanged(),this.onDisplayedColumnsWidthChanged(),this.onDisplayedRowsChanged()},t.prototype.listenOnDomOrder=function(){var e=this,r=[T.STICKY_TOP_CENTER,T.STICKY_TOP_LEFT,T.STICKY_TOP_RIGHT,T.STICKY_TOP_FULL_WIDTH],o=r.indexOf(this.name)>=0;if(o){this.comp.setDomOrder(!0);return}var i=function(){var s=e.gridOptionsService.get("ensureDomOrder"),a=e.gridOptionsService.isDomLayout("print");e.comp.setDomOrder(s||a)};this.addManagedPropertyListener("domLayout",i),i()},t.prototype.stopHScrollOnPinnedRows=function(){var e=this;this.forContainers([T.TOP_CENTER,T.STICKY_TOP_CENTER,T.BOTTOM_CENTER],function(){var r=function(){return e.eViewport.scrollLeft=0};e.addManagedListener(e.eViewport,"scroll",r)})},t.prototype.onDisplayedColumnsChanged=function(){var e=this;this.forContainers([T.CENTER],function(){return e.onHorizontalViewportChanged()})},t.prototype.onDisplayedColumnsWidthChanged=function(){var e=this;this.forContainers([T.CENTER],function(){return e.onHorizontalViewportChanged()})},t.prototype.addPreventScrollWhileDragging=function(){var e=this,r=function(o){e.dragService.isDragging()&&o.cancelable&&o.preventDefault()};this.eContainer.addEventListener("touchmove",r,{passive:!1}),this.addDestroyFunc(function(){return e.eContainer.removeEventListener("touchmove",r)})},t.prototype.onHorizontalViewportChanged=function(e){e===void 0&&(e=!1);var r=this.getCenterWidth(),o=this.getCenterViewportScrollLeft();this.columnModel.setViewportPosition(r,o,e)},t.prototype.getCenterWidth=function(){return ir(this.eViewport)},t.prototype.getCenterViewportScrollLeft=function(){return Jr(this.eViewport,this.enableRtl)},t.prototype.registerViewportResizeListener=function(e){var r=this.resizeObserverService.observeResize(this.eViewport,e);this.addDestroyFunc(function(){return r()})},t.prototype.isViewportInTheDOMTree=function(){return kn(this.eViewport)},t.prototype.getViewportScrollLeft=function(){return Jr(this.eViewport,this.enableRtl)},t.prototype.isHorizontalScrollShowing=function(){var e=this.gridOptionsService.get("alwaysShowHorizontalScroll");return e||rl(this.eViewport)},t.prototype.getViewportElement=function(){return this.eViewport},t.prototype.setContainerTranslateX=function(e){this.eContainer.style.transform="translateX(".concat(e,"px)")},t.prototype.getHScrollPosition=function(){var e={left:this.eViewport.scrollLeft,right:this.eViewport.scrollLeft+this.eViewport.offsetWidth};return e},t.prototype.setCenterViewportScrollLeft=function(e){Zr(this.eViewport,e,this.enableRtl)},t.prototype.isContainerVisible=function(){var e=t.getPinned(this.name);return!e||!!this.pinnedWidthFeature&&this.pinnedWidthFeature.getWidth()>0},t.prototype.onPinnedWidthChanged=function(){var e=this.isContainerVisible();this.visible!=e&&(this.visible=e,this.onDisplayedRowsChanged())},t.prototype.onDisplayedRowsChanged=function(e){var r=this;if(e===void 0&&(e=!1),!this.visible){this.comp.setRowCtrls({rowCtrls:this.EMPTY_CTRLS});return}var o=this.gridOptionsService.isDomLayout("print"),i=this.gridOptionsService.get("embedFullWidthRows"),s=i||o,a=this.getRowCtrls().filter(function(l){var u=l.isFullWidth(),c=r.isFullWithContainer?!s&&u:s||!u;return c});this.comp.setRowCtrls({rowCtrls:a,useFlushSync:e})},t.prototype.getRowCtrls=function(){switch(this.name){case T.TOP_CENTER:case T.TOP_LEFT:case T.TOP_RIGHT:case T.TOP_FULL_WIDTH:return this.rowRenderer.getTopRowCtrls();case T.STICKY_TOP_CENTER:case T.STICKY_TOP_LEFT:case T.STICKY_TOP_RIGHT:case T.STICKY_TOP_FULL_WIDTH:return this.rowRenderer.getStickyTopRowCtrls();case T.BOTTOM_CENTER:case T.BOTTOM_LEFT:case T.BOTTOM_RIGHT:case T.BOTTOM_FULL_WIDTH:return this.rowRenderer.getBottomRowCtrls();default:return this.rowRenderer.getCentreRowCtrls()}},xr([v("dragService")],t.prototype,"dragService",void 0),xr([v("ctrlsService")],t.prototype,"ctrlsService",void 0),xr([v("columnModel")],t.prototype,"columnModel",void 0),xr([v("resizeObserverService")],t.prototype,"resizeObserverService",void 0),xr([v("rowRenderer")],t.prototype,"rowRenderer",void 0),xr([F],t.prototype,"postConstruct",null),t}(D),Dv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),At=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Av=`
+ + + + + + + +
`),bv=function(n){Dv(t,n);function t(){return n.call(this,Av)||this}return t.prototype.init=function(){var e=this,r=function(i,s){var a="".concat(i,"px");s.style.minHeight=a,s.style.height=a},o={setRowAnimationCssOnBodyViewport:function(i,s){return e.setRowAnimationCssOnBodyViewport(i,s)},setColumnCount:function(i){return ja(e.getGui(),i)},setRowCount:function(i){return Wa(e.getGui(),i)},setTopHeight:function(i){return r(i,e.eTop)},setBottomHeight:function(i){return r(i,e.eBottom)},setTopDisplay:function(i){return e.eTop.style.display=i},setBottomDisplay:function(i){return e.eBottom.style.display=i},setStickyTopHeight:function(i){return e.eStickyTop.style.height=i},setStickyTopTop:function(i){return e.eStickyTop.style.top=i},setStickyTopWidth:function(i){return e.eStickyTop.style.width=i},setColumnMovingCss:function(i,s){return e.addOrRemoveCssClass(i,s)},updateLayoutClasses:function(i,s){var a=[e.eBodyViewport.classList,e.eBody.classList];a.forEach(function(l){l.toggle(pe.AUTO_HEIGHT,s.autoHeight),l.toggle(pe.NORMAL,s.normal),l.toggle(pe.PRINT,s.print)}),e.addOrRemoveCssClass(pe.AUTO_HEIGHT,s.autoHeight),e.addOrRemoveCssClass(pe.NORMAL,s.normal),e.addOrRemoveCssClass(pe.PRINT,s.print)},setAlwaysVerticalScrollClass:function(i,s){return e.eBodyViewport.classList.toggle(eu,s)},registerBodyViewportResizeListener:function(i){var s=e.resizeObserverService.observeResize(e.eBodyViewport,i);e.addDestroyFunc(function(){return s()})},setPinnedTopBottomOverflowY:function(i){return e.eTop.style.overflowY=e.eBottom.style.overflowY=i},setCellSelectableCss:function(i,s){[e.eTop,e.eBodyViewport,e.eBottom].forEach(function(a){return a.classList.toggle(i,s)})},setBodyViewportWidth:function(i){return e.eBodyViewport.style.width=i}};this.ctrl=this.createManagedBean(new Of),this.ctrl.setComp(o,this.getGui(),this.eBodyViewport,this.eTop,this.eBottom,this.eStickyTop),(this.rangeService&&this.gridOptionsService.get("enableRangeSelection")||this.gridOptionsService.get("rowSelection")==="multiple")&&ka(this.getGui(),!0)},t.prototype.setRowAnimationCssOnBodyViewport=function(e,r){var o=this.eBodyViewport.classList;o.toggle(Mr.ANIMATION_ON,r),o.toggle(Mr.ANIMATION_OFF,!r)},t.prototype.getFloatingTopBottom=function(){return[this.eTop,this.eBottom]},At([v("resizeObserverService")],t.prototype,"resizeObserverService",void 0),At([Y("rangeService")],t.prototype,"rangeService",void 0),At([L("eBodyViewport")],t.prototype,"eBodyViewport",void 0),At([L("eStickyTop")],t.prototype,"eStickyTop",void 0),At([L("eTop")],t.prototype,"eTop",void 0),At([L("eBottom")],t.prototype,"eBottom",void 0),At([L("gridHeader")],t.prototype,"headerRootComp",void 0),At([L("eBody")],t.prototype,"eBody",void 0),At([F],t.prototype,"init",null),t}(k),Fv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),yi=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Lv=function(n){Fv(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.postConstruct=function(){this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,this.onDisplayedColumnsWidthChanged.bind(this))},t.prototype.onDisplayedColumnsChanged=function(){this.update()},t.prototype.onDisplayedColumnsWidthChanged=function(){this.update()},t.prototype.update=function(){var e=this;this.columnAnimationService.isActive()?this.columnAnimationService.executeLaterVMTurn(function(){e.columnAnimationService.executeLaterVMTurn(function(){return e.updateImpl()})}):this.updateImpl()},t.prototype.updateImpl=function(){var e=this.ctrlsService.getCenterRowContainerCtrl();if(!(!e||this.columnAnimationService.isActive())){var r={horizontalScrollShowing:e.isHorizontalScrollShowing(),verticalScrollShowing:this.isVerticalScrollShowing()};this.setScrollsVisible(r)}},t.prototype.setScrollsVisible=function(e){var r=this.horizontalScrollShowing!==e.horizontalScrollShowing||this.verticalScrollShowing!==e.verticalScrollShowing;if(r){this.horizontalScrollShowing=e.horizontalScrollShowing,this.verticalScrollShowing=e.verticalScrollShowing;var o={type:g.EVENT_SCROLL_VISIBILITY_CHANGED};this.eventService.dispatchEvent(o)}},t.prototype.isHorizontalScrollShowing=function(){return this.horizontalScrollShowing},t.prototype.isVerticalScrollShowing=function(){return this.verticalScrollShowing},yi([v("ctrlsService")],t.prototype,"ctrlsService",void 0),yi([v("columnAnimationService")],t.prototype,"columnAnimationService",void 0),yi([F],t.prototype,"postConstruct",null),t=yi([x("scrollVisibleService")],t),t}(D),Mv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),uu=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Iv=function(n){Mv(t,n);function t(){var r=n!==null&&n.apply(this,arguments)||this;return r.gridInstanceId=e.gridInstanceSequence.next(),r}e=t,t.prototype.stampTopLevelGridCompWithGridInstance=function(r){r[e.GRID_DOM_KEY]=this.gridInstanceId},t.prototype.getRenderedCellForEvent=function(r){return ko(this.gridOptionsService,r.target,hr.DOM_DATA_KEY_CELL_CTRL)},t.prototype.isEventFromThisGrid=function(r){var o=this.isElementInThisGrid(r.target);return o},t.prototype.isElementInThisGrid=function(r){for(var o=r;o;){var i=o[e.GRID_DOM_KEY];if(P(i)){var s=i===this.gridInstanceId;return s}o=o.parentElement}return!1},t.prototype.getCellPositionForEvent=function(r){var o=this.getRenderedCellForEvent(r);return o?o.getCellPosition():null},t.prototype.getNormalisedPosition=function(r){var o=this.gridOptionsService.isDomLayout("normal"),i=r,s,a;if(i.clientX!=null||i.clientY!=null?(s=i.clientX,a=i.clientY):(s=i.x,a=i.y),o){var l=this.ctrlsService.getGridBodyCtrl(),u=l.getScrollFeature().getVScrollPosition(),c=l.getScrollFeature().getHScrollPosition();s+=c.left,a+=u.top}return{x:s,y:a}};var e;return t.gridInstanceSequence=new Dr,t.GRID_DOM_KEY="__ag_grid_instance",uu([v("ctrlsService")],t.prototype,"ctrlsService",void 0),t=e=uu([x("mouseEventService")],t),t}(D),xv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),mi=function(){return mi=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Nv=function(n){xv(t,n);function t(){var e=n.call(this)||this;return e.onPageDown=Zi(e.onPageDown,100),e.onPageUp=Zi(e.onPageUp,100),e}return t.prototype.postConstruct=function(){var e=this;this.ctrlsService.whenReady(function(r){e.gridBodyCon=r.gridBodyCtrl})},t.prototype.handlePageScrollingKey=function(e,r){r===void 0&&(r=!1);var o=e.key,i=e.altKey,s=e.ctrlKey||e.metaKey,a=!!this.rangeService&&e.shiftKey,l=this.mouseEventService.getCellPositionForEvent(e),u=!1;switch(o){case _.PAGE_HOME:case _.PAGE_END:!s&&!i&&(this.onHomeOrEndKey(o),u=!0);break;case _.LEFT:case _.RIGHT:case _.UP:case _.DOWN:if(!l)return!1;s&&!i&&!a&&(this.onCtrlUpDownLeftRight(o,l),u=!0);break;case _.PAGE_DOWN:case _.PAGE_UP:!s&&!i&&(u=this.handlePageUpDown(o,l,r));break}return u&&e.preventDefault(),u},t.prototype.handlePageUpDown=function(e,r,o){return o&&(r=this.focusService.getFocusedCell()),r?(e===_.PAGE_UP?this.onPageUp(r):this.onPageDown(r),!0):!1},t.prototype.navigateTo=function(e){var r=e.scrollIndex,o=e.scrollType,i=e.scrollColumn,s=e.focusIndex,a=e.focusColumn;if(P(i)&&!i.isPinned()&&this.gridBodyCon.getScrollFeature().ensureColumnVisible(i),P(r)&&this.gridBodyCon.getScrollFeature().ensureIndexVisible(r,o),e.isAsync||this.gridBodyCon.getScrollFeature().ensureIndexVisible(s),this.focusService.setFocusedCell({rowIndex:s,column:a,rowPinned:null,forceBrowserFocus:!0}),this.rangeService){var l={rowIndex:s,rowPinned:null,column:a};this.rangeService.setRangeToCell(l)}},t.prototype.onPageDown=function(e){var r=this.ctrlsService.getGridBodyCtrl(),o=r.getScrollFeature().getVScrollPosition(),i=this.getViewportHeight(),s=this.paginationProxy.getPixelOffset(),a=o.top+i,l=this.paginationProxy.getRowIndexAtPixel(a+s);this.columnModel.isAutoRowHeightActive()?this.navigateToNextPageWithAutoHeight(e,l):this.navigateToNextPage(e,l)},t.prototype.onPageUp=function(e){var r=this.ctrlsService.getGridBodyCtrl(),o=r.getScrollFeature().getVScrollPosition(),i=this.paginationProxy.getPixelOffset(),s=o.top,a=this.paginationProxy.getRowIndexAtPixel(s+i);this.columnModel.isAutoRowHeightActive()?this.navigateToNextPageWithAutoHeight(e,a,!0):this.navigateToNextPage(e,a,!0)},t.prototype.navigateToNextPage=function(e,r,o){o===void 0&&(o=!1);var i=this.getViewportHeight(),s=this.paginationProxy.getPageFirstRow(),a=this.paginationProxy.getPageLastRow(),l=this.paginationProxy.getPixelOffset(),u=this.paginationProxy.getRow(e.rowIndex),c=o?(u==null?void 0:u.rowHeight)-i-l:i-l,p=(u==null?void 0:u.rowTop)+c,d=this.paginationProxy.getRowIndexAtPixel(p+l);if(d===e.rowIndex){var h=o?-1:1;r=d=e.rowIndex+h}var f;o?(f="bottom",da&&(d=a),r>a&&(r=a)),this.isRowTallerThanView(d)&&(r=d,f="top"),this.navigateTo({scrollIndex:r,scrollType:f,scrollColumn:null,focusIndex:d,focusColumn:e.column})},t.prototype.navigateToNextPageWithAutoHeight=function(e,r,o){var i=this;o===void 0&&(o=!1),this.navigateTo({scrollIndex:r,scrollType:o?"bottom":"top",scrollColumn:null,focusIndex:r,focusColumn:e.column}),setTimeout(function(){var s=i.getNextFocusIndexForAutoHeight(e,o);i.navigateTo({scrollIndex:r,scrollType:o?"bottom":"top",scrollColumn:null,focusIndex:s,focusColumn:e.column,isAsync:!0})},50)},t.prototype.getNextFocusIndexForAutoHeight=function(e,r){var o;r===void 0&&(r=!1);for(var i=r?-1:1,s=this.getViewportHeight(),a=this.paginationProxy.getPageLastRow(),l=0,u=e.rowIndex;u>=0&&u<=a;){var c=this.paginationProxy.getRow(u);if(c){var p=(o=c.rowHeight)!==null&&o!==void 0?o:0;if(l+p>s)break;l+=p}u+=i}return Math.max(0,Math.min(u,a))},t.prototype.getViewportHeight=function(){var e=this.ctrlsService.getGridBodyCtrl(),r=e.getScrollFeature().getVScrollPosition(),o=this.gridOptionsService.getScrollbarWidth(),i=r.bottom-r.top;return this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()&&(i-=o),i},t.prototype.isRowTallerThanView=function(e){var r=this.paginationProxy.getRow(e);if(!r)return!1;var o=r.rowHeight;return typeof o!="number"?!1:o>this.getViewportHeight()},t.prototype.onCtrlUpDownLeftRight=function(e,r){var o=this.cellNavigationService.getNextCellToFocus(e,r,!0),i=o.rowIndex,s=o.column;this.navigateTo({scrollIndex:i,scrollType:null,scrollColumn:s,focusIndex:i,focusColumn:s})},t.prototype.onHomeOrEndKey=function(e){var r=e===_.PAGE_HOME,o=this.columnModel.getAllDisplayedColumns(),i=r?o[0]:q(o),s=r?this.paginationProxy.getPageFirstRow():this.paginationProxy.getPageLastRow();this.navigateTo({scrollIndex:s,scrollType:null,scrollColumn:i,focusIndex:s,focusColumn:i})},t.prototype.onTabKeyDown=function(e,r){var o=r.shiftKey,i=this.tabToNextCellCommon(e,o,r);if(i){r.preventDefault();return}if(o){var s=e.getRowPosition(),a=s.rowIndex,l=s.rowPinned,u=l?a===0:a===this.paginationProxy.getPageFirstRow();u&&(this.gridOptionsService.get("headerHeight")===0||this.gridOptionsService.get("suppressHeaderFocus")?this.focusService.focusNextGridCoreContainer(!0,!0):(r.preventDefault(),this.focusService.focusPreviousFromFirstCell(r)))}else e instanceof hr&&e.focusCell(!0),this.focusService.focusNextGridCoreContainer(o)&&r.preventDefault()},t.prototype.tabToNextCell=function(e,r){var o=this.focusService.getFocusedCell();if(!o)return!1;var i=this.getCellByPosition(o);return!i&&(i=this.rowRenderer.getRowByPosition(o),!i||!i.isFullWidth())?!1:this.tabToNextCellCommon(i,e,r)},t.prototype.tabToNextCellCommon=function(e,r,o){var i=e.isEditing();if(!i&&e instanceof hr){var s=e,a=s.getRowCtrl();a&&(i=a.isEditing())}var l;return i?this.gridOptionsService.get("editType")==="fullRow"?l=this.moveToNextEditingRow(e,r,o):l=this.moveToNextEditingCell(e,r,o):l=this.moveToNextCellNotEditing(e,r),l||!!this.focusService.getFocusedHeader()},t.prototype.moveToNextEditingCell=function(e,r,o){o===void 0&&(o=null);var i=e.getCellPosition();e.getGui().focus(),e.stopEditing();var s=this.findNextCellToFocusOn(i,r,!0);return s==null?!1:(s.startEditing(null,!0,o),s.focusCell(!1),!0)},t.prototype.moveToNextEditingRow=function(e,r,o){o===void 0&&(o=null);var i=e.getCellPosition(),s=this.findNextCellToFocusOn(i,r,!0);if(s==null)return!1;var a=s.getCellPosition(),l=this.isCellEditable(i),u=this.isCellEditable(a),c=a&&i.rowIndex===a.rowIndex&&i.rowPinned===a.rowPinned;if(l&&e.setFocusOutOnEditor(),!c){var p=e.getRowCtrl();p.stopEditing();var d=s.getRowCtrl();d.startRowEditing(void 0,void 0,o)}return u?(s.setFocusInOnEditor(),s.focusCell()):s.focusCell(!0),!0},t.prototype.moveToNextCellNotEditing=function(e,r){var o=this.columnModel.getAllDisplayedColumns(),i;e instanceof fr?i=mi(mi({},e.getRowPosition()),{column:r?o[0]:q(o)}):i=e.getCellPosition();var s=this.findNextCellToFocusOn(i,r,!1);if(s instanceof hr)s.focusCell(!0);else if(s)return this.tryToFocusFullWidthRow(s.getRowPosition(),r);return P(s)},t.prototype.findNextCellToFocusOn=function(e,r,o){for(var i=e;;){e!==i&&(e=i),r||(i=this.getLastCellOfColSpan(i)),i=this.cellNavigationService.getNextTabbedCell(i,r);var s=this.gridOptionsService.getCallback("tabToNextCell");if(P(s)){var a={backwards:r,editing:o,previousCellPosition:e,nextCellPosition:i||null},l=s(a);P(l)?(l.floating&&(V("tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?"),l.rowPinned=l.floating),i={rowIndex:l.rowIndex,column:l.column,rowPinned:l.rowPinned}):i=null}if(!i)return null;if(i.rowIndex<0){var u=this.headerNavigationService.getHeaderRowCount();return this.focusService.focusHeaderPosition({headerPosition:{headerRowIndex:u+i.rowIndex,column:i.column},fromCell:!0}),null}var c=this.gridOptionsService.get("editType")==="fullRow";if(o&&!c){var p=this.isCellEditable(i);if(!p)continue}this.ensureCellVisible(i);var d=this.getCellByPosition(i);if(!d){var h=this.rowRenderer.getRowByPosition(i);if(!h||!h.isFullWidth()||o)continue;return h}if(!d.isSuppressNavigable())return this.rangeService&&this.rangeService.setRangeToCell(i),d}},t.prototype.isCellEditable=function(e){var r=this.lookupRowNodeForCell(e);return r?e.column.isCellEditable(r):!1},t.prototype.getCellByPosition=function(e){var r=this.rowRenderer.getRowByPosition(e);return r?r.getCellCtrl(e.column):null},t.prototype.lookupRowNodeForCell=function(e){return e.rowPinned==="top"?this.pinnedRowModel.getPinnedTopRow(e.rowIndex):e.rowPinned==="bottom"?this.pinnedRowModel.getPinnedBottomRow(e.rowIndex):this.paginationProxy.getRow(e.rowIndex)},t.prototype.navigateToNextCell=function(e,r,o,i){for(var s=o,a=!1;s&&(s===o||!this.isValidNavigateCell(s));)this.gridOptionsService.get("enableRtl")?r===_.LEFT&&(s=this.getLastCellOfColSpan(s)):r===_.RIGHT&&(s=this.getLastCellOfColSpan(s)),s=this.cellNavigationService.getNextCellToFocus(r,s),a=H(s);if(a&&e&&e.key===_.UP&&(s={rowIndex:-1,rowPinned:null,column:o.column}),i){var l=this.gridOptionsService.getCallback("navigateToNextCell");if(P(l)){var u={key:r,previousCellPosition:o,nextCellPosition:s||null,event:e},c=l(u);P(c)?(c.floating&&(V("tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?"),c.rowPinned=c.floating),s={rowPinned:c.rowPinned,rowIndex:c.rowIndex,column:c.column}):s=null}}if(s){if(s.rowIndex<0){var p=this.headerNavigationService.getHeaderRowCount();this.focusService.focusHeaderPosition({headerPosition:{headerRowIndex:p+s.rowIndex,column:o.column},event:e||void 0,fromCell:!0});return}var d=this.getNormalisedPosition(s);d?this.focusPosition(d):this.tryToFocusFullWidthRow(s)}},t.prototype.getNormalisedPosition=function(e){this.ensureCellVisible(e);var r=this.getCellByPosition(e);return r?(e=r.getCellPosition(),this.ensureCellVisible(e),e):null},t.prototype.tryToFocusFullWidthRow=function(e,r){r===void 0&&(r=!1);var o=this.columnModel.getAllDisplayedColumns(),i=this.rowRenderer.getRowByPosition(e);if(!i||!i.isFullWidth())return!1;var s=this.focusService.getFocusedCell(),a={rowIndex:e.rowIndex,rowPinned:e.rowPinned,column:e.column||(r?q(o):o[0])};this.focusPosition(a);var l=s!=null?this.rowPositionUtils.before(a,s):!1,u={type:g.EVENT_FULL_WIDTH_ROW_FOCUSED,rowIndex:a.rowIndex,rowPinned:a.rowPinned,column:a.column,isFullWidthCell:!0,floating:a.rowPinned,fromBelow:l};return this.eventService.dispatchEvent(u),!0},t.prototype.focusPosition=function(e){this.focusService.setFocusedCell({rowIndex:e.rowIndex,column:e.column,rowPinned:e.rowPinned,forceBrowserFocus:!0}),this.rangeService&&this.rangeService.setRangeToCell(e)},t.prototype.isValidNavigateCell=function(e){var r=this.rowPositionUtils.getRowNode(e);return!!r},t.prototype.getLastCellOfColSpan=function(e){var r=this.getCellByPosition(e);if(!r)return e;var o=r.getColSpanningList();return o.length===1?e:{rowIndex:e.rowIndex,column:q(o),rowPinned:e.rowPinned}},t.prototype.ensureCellVisible=function(e){var r=this.gridOptionsService.isGroupRowsSticky(),o=this.rowModel.getRow(e.rowIndex),i=r&&(o==null?void 0:o.sticky);!i&&H(e.rowPinned)&&this.gridBodyCon.getScrollFeature().ensureIndexVisible(e.rowIndex),e.column.isPinned()||this.gridBodyCon.getScrollFeature().ensureColumnVisible(e.column)},Ae([v("mouseEventService")],t.prototype,"mouseEventService",void 0),Ae([v("paginationProxy")],t.prototype,"paginationProxy",void 0),Ae([v("focusService")],t.prototype,"focusService",void 0),Ae([Y("rangeService")],t.prototype,"rangeService",void 0),Ae([v("columnModel")],t.prototype,"columnModel",void 0),Ae([v("rowModel")],t.prototype,"rowModel",void 0),Ae([v("ctrlsService")],t.prototype,"ctrlsService",void 0),Ae([v("rowRenderer")],t.prototype,"rowRenderer",void 0),Ae([v("headerNavigationService")],t.prototype,"headerNavigationService",void 0),Ae([v("rowPositionUtils")],t.prototype,"rowPositionUtils",void 0),Ae([v("cellNavigationService")],t.prototype,"cellNavigationService",void 0),Ae([v("pinnedRowModel")],t.prototype,"pinnedRowModel",void 0),Ae([F],t.prototype,"postConstruct",null),t=Ae([x("navigationService")],t),t}(D),Gv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Vv=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Hv=function(n){Gv(t,n);function t(e){var r=n.call(this,'
')||this;return r.params=e,r}return t.prototype.postConstruct=function(){this.gridOptionsService.setDomData(this.getGui(),t.DOM_KEY_POPUP_EDITOR_WRAPPER,!0),this.addKeyDownListener()},t.prototype.addKeyDownListener=function(){var e=this,r=this.getGui(),o=this.params,i=function(s){Jo(e.gridOptionsService,s,o.node,o.column,!0)||o.onKeyDown(s)};this.addManagedListener(r,"keydown",i)},t.DOM_KEY_POPUP_EDITOR_WRAPPER="popupEditorWrapper",Vv([F],t.prototype,"postConstruct",null),t}(cr),Bv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),kv=function(n){Bv(t,n);function t(e,r,o,i,s){var a=n.call(this)||this;a.rendererVersion=0,a.editorVersion=0,a.beans=e,a.column=r.getColumn(),a.rowNode=r.getRowNode(),a.rowCtrl=r.getRowCtrl(),a.eRow=i,a.cellCtrl=r;var l=document.createElement("div");l.setAttribute("comp-id","".concat(a.getCompId())),a.setTemplateFromElement(l);var u=a.getGui();a.forceWrapper=r.isForceWrapper(),a.refreshWrapper(!1);var c=function(h,f){f!=null&&f!=""?u.setAttribute(h,f):u.removeAttribute(h)};le(u,r.getCellAriaRole()),c("col-id",r.getColumnIdSanitised());var p=r.getTabIndex();p!==void 0&&c("tabindex",p.toString());var d={addOrRemoveCssClass:function(h,f){return a.addOrRemoveCssClass(h,f)},setUserStyles:function(h){return Un(u,h)},getFocusableElement:function(){return a.getFocusableElement()},setIncludeSelection:function(h){return a.includeSelection=h},setIncludeRowDrag:function(h){return a.includeRowDrag=h},setIncludeDndSource:function(h){return a.includeDndSource=h},setRenderDetails:function(h,f,y){return a.setRenderDetails(h,f,y)},setEditDetails:function(h,f,y){return a.setEditDetails(h,f,y)},getCellEditor:function(){return a.cellEditor||null},getCellRenderer:function(){return a.cellRenderer||null},getParentOfValue:function(){return a.getParentOfValue()}};return r.setComp(d,a.getGui(),a.eCellWrapper,o,s),a}return t.prototype.getParentOfValue=function(){return this.eCellValue?this.eCellValue:this.eCellWrapper?this.eCellWrapper:this.getGui()},t.prototype.setRenderDetails=function(e,r,o){var i=this.cellEditor&&!this.cellEditorPopupWrapper;if(!i){this.firstRender=this.firstRender==null;var s=this.refreshWrapper(!1);if(this.refreshEditStyles(!1),e){var a=o||s,l=a?!1:this.refreshCellRenderer(e);l||(this.destroyRenderer(),this.createCellRendererInstance(e))}else this.destroyRenderer(),this.insertValueWithoutCellRenderer(r)}},t.prototype.setEditDetails=function(e,r,o){e?this.createCellEditorInstance(e,r,o):this.destroyEditor()},t.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)},t.prototype.refreshWrapper=function(e){var r=this.includeRowDrag||this.includeDndSource||this.includeSelection,o=r||this.forceWrapper,i=o&&this.eCellWrapper==null;if(i){var s=document.createElement("div");s.setAttribute("role","presentation"),s.setAttribute("class","ag-cell-wrapper"),this.eCellWrapper=s,this.getGui().appendChild(this.eCellWrapper)}var a=!o&&this.eCellWrapper!=null;a&&(ft(this.eCellWrapper),this.eCellWrapper=void 0),this.addOrRemoveCssClass("ag-cell-value",!o);var l=!e&&o,u=l&&this.eCellValue==null;if(u){var c=document.createElement("span");c.setAttribute("role","presentation"),c.setAttribute("class","ag-cell-value"),this.eCellValue=c,this.eCellWrapper.appendChild(this.eCellValue)}var p=!l&&this.eCellValue!=null;p&&(ft(this.eCellValue),this.eCellValue=void 0);var d=i||a||u||p;return d&&this.removeControls(),e||r&&this.addControls(),d},t.prototype.addControls=function(){this.includeRowDrag&&this.rowDraggingComp==null&&(this.rowDraggingComp=this.cellCtrl.createRowDragComp(),this.rowDraggingComp&&this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(),this.eCellValue)),this.includeDndSource&&this.dndSourceComp==null&&(this.dndSourceComp=this.cellCtrl.createDndSource(),this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(),this.eCellValue)),this.includeSelection&&this.checkboxSelectionComp==null&&(this.checkboxSelectionComp=this.cellCtrl.createSelectionCheckbox(),this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(),this.eCellValue))},t.prototype.createCellEditorInstance=function(e,r,o){var i=this,s=this.editorVersion,a=e.newAgStackInstance();if(a){var l=e.params;a.then(function(c){return i.afterCellEditorCreated(s,c,l,r,o)});var u=H(this.cellEditor);u&&l.cellStartedEdit&&this.cellCtrl.focusCell(!0)}},t.prototype.insertValueWithoutCellRenderer=function(e){var r=this.getParentOfValue();de(r);var o=e!=null?ae(e,!0):null;o!=null&&(r.textContent=o)},t.prototype.destroyEditorAndRenderer=function(){this.destroyRenderer(),this.destroyEditor()},t.prototype.destroyRenderer=function(){var e=this.beans.context;this.cellRenderer=e.destroyBean(this.cellRenderer),ft(this.cellRendererGui),this.cellRendererGui=null,this.rendererVersion++},t.prototype.destroyEditor=function(){var e=this.beans.context;this.hideEditorPopup&&this.hideEditorPopup(),this.hideEditorPopup=void 0,this.cellEditor=e.destroyBean(this.cellEditor),this.cellEditorPopupWrapper=e.destroyBean(this.cellEditorPopupWrapper),ft(this.cellEditorGui),this.cellEditorGui=null,this.editorVersion++},t.prototype.refreshCellRenderer=function(e){if(this.cellRenderer==null||this.cellRenderer.refresh==null||this.cellRendererClass!==e.componentClass)return!1;var r=this.cellRenderer.refresh(e.params);return r===!0||r===void 0},t.prototype.createCellRendererInstance=function(e){var r=this,o=this.beans.gridOptionsService.get("suppressAnimationFrame"),i=!o,s=this.rendererVersion,a=e.componentClass,l=function(){var u=r.rendererVersion!==s||!r.isAlive();if(!u){var c=e.newAgStackInstance(),p=r.afterCellRendererCreated.bind(r,s,a);c&&c.then(p)}};i&&this.firstRender?this.beans.animationFrameService.createTask(l,this.rowNode.rowIndex,"createTasksP2"):l()},t.prototype.getCtrl=function(){return this.cellCtrl},t.prototype.getRowCtrl=function(){return this.rowCtrl},t.prototype.getCellRenderer=function(){return this.cellRenderer},t.prototype.getCellEditor=function(){return this.cellEditor},t.prototype.afterCellRendererCreated=function(e,r,o){var i=!this.isAlive()||e!==this.rendererVersion;if(i){this.beans.context.destroyBean(o);return}if(this.cellRenderer=o,this.cellRendererClass=r,this.cellRendererGui=this.cellRenderer.getGui(),this.cellRendererGui!=null){var s=this.getParentOfValue();de(s),s.appendChild(this.cellRendererGui)}},t.prototype.afterCellEditorCreated=function(e,r,o,i,s){var a=e!==this.editorVersion;if(a){this.beans.context.destroyBean(r);return}var l=r.isCancelBeforeStart&&r.isCancelBeforeStart();if(l){this.beans.context.destroyBean(r),this.cellCtrl.stopEditing(!0);return}if(!r.getGui){console.warn("AG Grid: cellEditor for column ".concat(this.column.getId()," is missing getGui() method")),this.beans.context.destroyBean(r);return}this.cellEditor=r,this.cellEditorGui=r.getGui();var u=i||r.isPopup!==void 0&&r.isPopup();u?this.addPopupCellEditor(o,s):this.addInCellEditor(),this.refreshEditStyles(!0,u),r.afterGuiAttached&&r.afterGuiAttached()},t.prototype.refreshEditStyles=function(e,r){var o;this.addOrRemoveCssClass("ag-cell-inline-editing",e&&!r),this.addOrRemoveCssClass("ag-cell-popup-editing",e&&!!r),this.addOrRemoveCssClass("ag-cell-not-inline-editing",!e||!!r),(o=this.rowCtrl)===null||o===void 0||o.setInlineEditingCss(e)},t.prototype.addInCellEditor=function(){var e=this.getGui(),r=this.beans.gridOptionsService.getDocument();if(e.contains(r.activeElement)&&e.focus(),this.destroyRenderer(),this.refreshWrapper(!0),this.clearParentOfValue(),this.cellEditorGui){var o=this.getParentOfValue();o.appendChild(this.cellEditorGui)}},t.prototype.addPopupCellEditor=function(e,r){var o=this;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 i=this.cellEditor;this.cellEditorPopupWrapper=this.beans.context.createBean(new Hv(e));var s=this.cellEditorPopupWrapper.getGui();this.cellEditorGui&&s.appendChild(this.cellEditorGui);var a=this.beans.popupService,l=this.beans.gridOptionsService.get("stopEditingWhenCellsLoseFocus"),u=r??(i.getPopupPosition?i.getPopupPosition():"over"),c=this.beans.gridOptionsService.get("enableRtl"),p={ePopup:s,column:this.column,rowNode:this.rowNode,type:"popupCellEditor",eventSource:this.getGui(),position:u,alignSide:c?"right":"left",keepWithinBounds:!0},d=a.positionPopupByComponent.bind(a,p),h=this.beans.localeService.getLocaleTextFunc(),f=a.addPopup({modal:l,eChild:s,closeOnEsc:!0,closedCallback:function(){o.cellCtrl.onPopupEditorClosed()},anchorToElement:this.getGui(),positionCallback:d,ariaLabel:h("ariaLabelCellEditor","Cell Editor")});f&&(this.hideEditorPopup=f.hideFunc)},t.prototype.detach=function(){this.eRow.removeChild(this.getGui())},t.prototype.destroy=function(){this.cellCtrl.stopEditing(),this.destroyEditorAndRenderer(),this.removeControls(),n.prototype.destroy.call(this)},t.prototype.clearParentOfValue=function(){var e=this.getGui(),r=this.beans.gridOptionsService.getDocument();e.contains(r.activeElement)&&Fn()&&e.focus({preventScroll:!0}),de(this.getParentOfValue())},t}(k),Wv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),jv=function(n){Wv(t,n);function t(e,r,o){var i=n.call(this)||this;i.cellComps={},i.beans=r,i.rowCtrl=e;var s=document.createElement("div");s.setAttribute("comp-id","".concat(i.getCompId())),s.setAttribute("style",i.getInitialStyle(o)),i.setTemplateFromElement(s);var a=i.getGui(),l=a.style;i.domOrder=i.rowCtrl.getDomOrder(),le(a,"row");var u=i.rowCtrl.getTabIndex();u!=null&&a.setAttribute("tabindex",u.toString());var c={setDomOrder:function(p){return i.domOrder=p},setCellCtrls:function(p){return i.setCellCtrls(p)},showFullWidth:function(p){return i.showFullWidth(p)},getFullWidthCellRenderer:function(){return i.getFullWidthCellRenderer()},addOrRemoveCssClass:function(p,d){return i.addOrRemoveCssClass(p,d)},setUserStyles:function(p){return Un(a,p)},setTop:function(p){return l.top=p},setTransform:function(p){return l.transform=p},setRowIndex:function(p){return a.setAttribute("row-index",p)},setRowId:function(p){return a.setAttribute("row-id",p)},setRowBusinessKey:function(p){return a.setAttribute("row-business-key",p)},refreshFullWidth:function(p){return i.refreshFullWidth(p)}};return e.setComp(c,i.getGui(),o),i.addDestroyFunc(function(){e.unsetComp(o)}),i}return t.prototype.getInitialStyle=function(e){var r=this.rowCtrl.getInitialTransform(e);return r?"transform: ".concat(r):"top: ".concat(this.rowCtrl.getInitialRowTop(e))},t.prototype.showFullWidth=function(e){var r=this,o=function(s){if(r.isAlive()){var a=s.getGui();r.getGui().appendChild(a),r.rowCtrl.setupDetailRowAutoHeight(a),r.setFullWidthRowComp(s)}else r.beans.context.destroyBean(s)},i=e.newAgStackInstance();i&&i.then(o)},t.prototype.setCellCtrls=function(e){var r=this,o=Object.assign({},this.cellComps);e.forEach(function(s){var a=s.getInstanceId(),l=r.cellComps[a];l==null?r.newCellComp(s):o[a]=null});var i=It(o).filter(function(s){return s!=null});this.destroyCells(i),this.ensureDomOrder(e)},t.prototype.ensureDomOrder=function(e){var r=this;if(this.domOrder){var o=[];e.forEach(function(i){var s=r.cellComps[i.getInstanceId()];s&&o.push(s.getGui())}),jn(this.getGui(),o)}},t.prototype.newCellComp=function(e){var r=new kv(this.beans,e,this.rowCtrl.isPrintLayout(),this.getGui(),this.rowCtrl.isEditing());this.cellComps[e.getInstanceId()]=r,this.getGui().appendChild(r.getGui())},t.prototype.destroy=function(){n.prototype.destroy.call(this),this.destroyAllCells()},t.prototype.destroyAllCells=function(){var e=It(this.cellComps).filter(function(r){return r!=null});this.destroyCells(e)},t.prototype.setFullWidthRowComp=function(e){var r=this;this.fullWidthCellRenderer&&console.error("AG Grid - should not be setting fullWidthRowComponent twice"),this.fullWidthCellRenderer=e,this.addDestroyFunc(function(){r.fullWidthCellRenderer=r.beans.context.destroyBean(r.fullWidthCellRenderer)})},t.prototype.getFullWidthCellRenderer=function(){return this.fullWidthCellRenderer},t.prototype.destroyCells=function(e){var r=this;e.forEach(function(o){if(o){var i=o.getCtrl().getInstanceId();r.cellComps[i]===o&&(o.detach(),o.destroy(),r.cellComps[i]=null)}})},t.prototype.refreshFullWidth=function(e){var r=this.fullWidthCellRenderer;if(!r||!r.refresh)return!1;var o=e();return r.refresh(o)},t}(k),Uv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Rs=function(){return Rs=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i};function zv(){var n=k.elementGettingCreated.getAttribute("name"),t=lu.getRowContainerCssClasses(n),e,r=n===T.CENTER||n===T.TOP_CENTER||n===T.STICKY_TOP_CENTER||n===T.BOTTOM_CENTER;return r?e='`):e='
'),e}var Kv=function(n){Uv(t,n);function t(){var e=n.call(this,zv())||this;return e.rowComps={},e.name=k.elementGettingCreated.getAttribute("name"),e.type=Ov(e.name),e}return t.prototype.postConstruct=function(){var e=this,r={setViewportHeight:function(i){return e.eViewport.style.height=i},setRowCtrls:function(i){var s=i.rowCtrls;return e.setRowCtrls(s)},setDomOrder:function(i){e.domOrder=i},setContainerWidth:function(i){return e.eContainer.style.width=i}},o=this.createManagedBean(new lu(this.name));o.setComp(r,this.eContainer,this.eViewport)},t.prototype.preDestroy=function(){this.setRowCtrls([])},t.prototype.setRowCtrls=function(e){var r=this,o=Rs({},this.rowComps);this.rowComps={},this.lastPlacedElement=null;var i=function(s){var a=s.getInstanceId(),l=o[a];if(l)r.rowComps[a]=l,delete o[a],r.ensureDomOrder(l.getGui());else{if(!s.getRowNode().displayed)return;var u=new jv(s,r.beans,r.type);r.rowComps[a]=u,r.appendRow(u.getGui())}};e.forEach(i),It(o).forEach(function(s){r.eContainer.removeChild(s.getGui()),s.destroy()}),le(this.eContainer,"rowgroup")},t.prototype.appendRow=function(e){this.domOrder?tl(this.eContainer,e,this.lastPlacedElement):this.eContainer.appendChild(e),this.lastPlacedElement=e},t.prototype.ensureDomOrder=function(e){this.domOrder&&(Wn(this.eContainer,e,this.lastPlacedElement),this.lastPlacedElement=e)},po([v("beans")],t.prototype,"beans",void 0),po([L("eViewport")],t.prototype,"eViewport",void 0),po([L("eContainer")],t.prototype,"eContainer",void 0),po([F],t.prototype,"postConstruct",null),po([Se],t.prototype,"preDestroy",null),t}(k),cu=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},$v=function(){function n(t){this.columnsToAggregate=[],this.columnsToGroup=[],this.columnsToPivot=[],this.pinned=t}return n.prototype.onDragEnter=function(t){var e=this;if(this.clearColumnsList(),!this.gridOptionsService.get("functionsReadOnly")){var r=t.dragItem.columns;r&&r.forEach(function(o){o.isPrimary()&&(o.isAnyFunctionActive()||(o.isAllowValue()?e.columnsToAggregate.push(o):o.isAllowRowGroup()?e.columnsToGroup.push(o):o.isAllowPivot()&&e.columnsToPivot.push(o)))})}},n.prototype.getIconName=function(){var t=this.columnsToAggregate.length+this.columnsToGroup.length+this.columnsToPivot.length;return t>0?this.pinned?he.ICON_PINNED:he.ICON_MOVE:null},n.prototype.onDragLeave=function(t){this.clearColumnsList()},n.prototype.clearColumnsList=function(){this.columnsToAggregate.length=0,this.columnsToGroup.length=0,this.columnsToPivot.length=0},n.prototype.onDragging=function(t){},n.prototype.onDragStop=function(t){this.columnsToAggregate.length>0&&this.columnModel.addValueColumns(this.columnsToAggregate,"toolPanelDragAndDrop"),this.columnsToGroup.length>0&&this.columnModel.addRowGroupColumns(this.columnsToGroup,"toolPanelDragAndDrop"),this.columnsToPivot.length>0&&this.columnModel.addPivotColumns(this.columnsToPivot,"toolPanelDragAndDrop")},cu([v("columnModel")],n.prototype,"columnModel",void 0),cu([v("gridOptionsService")],n.prototype,"gridOptionsService",void 0),n}(),Yv=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},vr=function(){function n(){}return n.attemptMoveColumns=function(t){var e=t.isFromHeader,r=t.hDirection,o=t.xPosition,i=t.fromEnter,s=t.fakeEvent,a=t.pinned,l=t.gridOptionsService,u=t.columnModel,c=r===Ue.Left,p=r===Ue.Right,d=t.allMovingColumns;if(e){var h=[];d.forEach(function(I){for(var W,ee=null,oe=I.getParent();oe!=null&&oe.getDisplayedLeafColumns().length===1;)ee=oe,oe=oe.getParent();if(ee!=null){var Z=!!(!((W=ee.getColGroupDef())===null||W===void 0)&&W.marryChildren),te=Z?ee.getProvidedColumnGroup().getLeafColumns():ee.getLeafColumns();te.forEach(function(Q){h.includes(Q)||h.push(Q)})}else h.includes(I)||h.push(I)}),d=h}var f=d.slice();u.sortColumnsLikeGridColumns(f);var y=this.calculateValidMoves({movingCols:f,draggingRight:p,xPosition:o,pinned:a,gridOptionsService:l,columnModel:u}),m=this.calculateOldIndex(f,u);if(y.length!==0){var C=y[0],w=m!==null&&!i;if(e&&(w=m!==null),!(w&&!s&&(c&&C>=m||p&&C<=m))){for(var E=u.getAllDisplayedColumns(),S=[],R=null,O=0;Ou.length?[l,u]:[u,l],2),l=a[0],u=a[1],l.forEach(function(c){u.indexOf(c)===-1&&r++})},i=0;i0){for(var C=0;C0){var S=d[f-1];E=h.indexOf(S)+1}else E=h.indexOf(d[0]),E===-1&&(E=0);var R=[E],O=function(I,W){return I-W};if(r){for(var b=E+1,A=c.length-1;b<=A;)R.push(b),b++;R.sort(O)}else{for(var b=E,A=c.length-1,M=c[b];b<=A&&u.indexOf(M)<0;)b++,R.push(b),M=c[b];b=E-1;for(var N=0;b>=N;)R.push(b),b--;R.sort(O).reverse()}return R},n.normaliseX=function(t,e,r,o,i){var s=i.getHeaderRowContainerCtrl(e).getViewport();if(r&&(t-=s.getBoundingClientRect().left),o.get("enableRtl")){var a=s.clientWidth;t=a-t}return e==null&&(t+=i.getCenterRowContainerCtrl().getCenterViewportScrollLeft()),t},n}(),ho=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},qv=function(){function n(t,e){this.needToMoveLeft=!1,this.needToMoveRight=!1,this.lastMovedInfo=null,this.pinned=t,this.eContainer=e,this.centerContainer=!P(t)}return n.prototype.init=function(){var t=this;this.ctrlsService.whenReady(function(){t.gridBodyCon=t.ctrlsService.getGridBodyCtrl()})},n.prototype.getIconName=function(){return this.pinned?he.ICON_PINNED:he.ICON_MOVE},n.prototype.onDragEnter=function(t){var e=t.dragItem.columns,r=t.dragSource.type===Te.ToolPanel;if(r)this.setColumnsVisible(e,!0,"uiColumnDragged");else{var o=t.dragItem.visibleState,i=(e||[]).filter(function(s){return o[s.getId()]});this.setColumnsVisible(i,!0,"uiColumnDragged")}this.setColumnsPinned(e,this.pinned,"uiColumnDragged"),this.onDragging(t,!0,!0)},n.prototype.onDragLeave=function(){this.ensureIntervalCleared(),this.lastMovedInfo=null},n.prototype.setColumnsVisible=function(t,e,r){if(t){var o=t.filter(function(i){return!i.getColDef().lockVisible});this.columnModel.setColumnsVisible(o,e,r)}},n.prototype.setColumnsPinned=function(t,e,r){if(t){var o=t.filter(function(i){return!i.getColDef().lockPinned});this.columnModel.setColumnsPinned(o,e,r)}},n.prototype.onDragStop=function(){this.onDragging(this.lastDraggingEvent,!1,!0,!0),this.ensureIntervalCleared(),this.lastMovedInfo=null},n.prototype.checkCenterForScrolling=function(t){if(this.centerContainer){var e=this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft(),r=e+this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();this.gridOptionsService.get("enableRtl")?(this.needToMoveRight=tr-50):(this.needToMoveLeft=tr-50),this.needToMoveLeft||this.needToMoveRight?this.ensureIntervalStarted():this.ensureIntervalCleared()}},n.prototype.onDragging=function(t,e,r,o){var i=this,s;if(t===void 0&&(t=this.lastDraggingEvent),e===void 0&&(e=!1),r===void 0&&(r=!1),o===void 0&&(o=!1),o){if(this.lastMovedInfo){var a=this.lastMovedInfo,l=a.columns,u=a.toIndex;vr.moveColumns(l,u,"uiColumnMoved",!0,this.columnModel)}return}if(this.lastDraggingEvent=t,!H(t.hDirection)){var c=vr.normaliseX(t.x,this.pinned,!1,this.gridOptionsService,this.ctrlsService);e||this.checkCenterForScrolling(c);var p=this.normaliseDirection(t.hDirection),d=t.dragSource.type,h=((s=t.dragSource.getDragItem().columns)===null||s===void 0?void 0:s.filter(function(y){return y.getColDef().lockPinned?y.getPinned()==i.pinned:!0}))||[],f=vr.attemptMoveColumns({allMovingColumns:h,isFromHeader:d===Te.HeaderCell,hDirection:p,xPosition:c,pinned:this.pinned,fromEnter:e,fakeEvent:r,gridOptionsService:this.gridOptionsService,columnModel:this.columnModel});f&&(this.lastMovedInfo=f)}},n.prototype.normaliseDirection=function(t){if(this.gridOptionsService.get("enableRtl"))switch(t){case Ue.Left:return Ue.Right;case Ue.Right:return Ue.Left;default:console.error("AG Grid: Unknown direction ".concat(t))}else return t},n.prototype.ensureIntervalStarted=function(){this.movingIntervalId||(this.intervalCount=0,this.failedMoveAttempts=0,this.movingIntervalId=window.setInterval(this.moveInterval.bind(this),100),this.needToMoveLeft?this.dragAndDropService.setGhostIcon(he.ICON_LEFT,!0):this.dragAndDropService.setGhostIcon(he.ICON_RIGHT,!0))},n.prototype.ensureIntervalCleared=function(){this.movingIntervalId&&(window.clearInterval(this.movingIntervalId),this.movingIntervalId=null,this.dragAndDropService.setGhostIcon(he.ICON_MOVE))},n.prototype.moveInterval=function(){var t;this.intervalCount++,t=10+this.intervalCount*5,t>100&&(t=100);var e=null,r=this.gridBodyCon.getScrollFeature();if(this.needToMoveLeft?e=r.scrollHorizontally(-t):this.needToMoveRight&&(e=r.scrollHorizontally(t)),e!==0)this.onDragging(this.lastDraggingEvent),this.failedMoveAttempts=0;else{this.failedMoveAttempts++;var o=this.lastDraggingEvent.dragItem.columns,i=o.filter(function(a){return!a.getColDef().lockPinned});if(i.length>0&&(this.dragAndDropService.setGhostIcon(he.ICON_PINNED),this.failedMoveAttempts>7)){var s=this.needToMoveLeft?"left":"right";this.setColumnsPinned(i,s,"uiColumnDragged"),this.dragAndDropService.nudge()}}},ho([v("columnModel")],n.prototype,"columnModel",void 0),ho([v("dragAndDropService")],n.prototype,"dragAndDropService",void 0),ho([v("gridOptionsService")],n.prototype,"gridOptionsService",void 0),ho([v("ctrlsService")],n.prototype,"ctrlsService",void 0),ho([F],n.prototype,"init",null),n}(),Qv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),fo=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Xv=function(n){Qv(t,n);function t(e,r){var o=n.call(this)||this;return o.pinned=e,o.eContainer=r,o}return t.prototype.postConstruct=function(){var e=this;this.ctrlsService.whenReady(function(r){switch(e.pinned){case"left":e.eSecondaryContainers=[[r.gridBodyCtrl.getBodyViewportElement(),r.leftRowContainerCtrl.getContainerElement()],[r.bottomLeftRowContainerCtrl.getContainerElement()],[r.topLeftRowContainerCtrl.getContainerElement()]];break;case"right":e.eSecondaryContainers=[[r.gridBodyCtrl.getBodyViewportElement(),r.rightRowContainerCtrl.getContainerElement()],[r.bottomRightRowContainerCtrl.getContainerElement()],[r.topRightRowContainerCtrl.getContainerElement()]];break;default:e.eSecondaryContainers=[[r.gridBodyCtrl.getBodyViewportElement(),r.centerRowContainerCtrl.getViewportElement()],[r.bottomCenterRowContainerCtrl.getViewportElement()],[r.topCenterRowContainerCtrl.getViewportElement()]];break}})},t.prototype.isInterestedIn=function(e){return e===Te.HeaderCell||e===Te.ToolPanel&&this.gridOptionsService.get("allowDragFromColumnsToolPanel")},t.prototype.getSecondaryContainers=function(){return this.eSecondaryContainers},t.prototype.getContainer=function(){return this.eContainer},t.prototype.init=function(){this.moveColumnFeature=this.createManagedBean(new qv(this.pinned,this.eContainer)),this.bodyDropPivotTarget=this.createManagedBean(new $v(this.pinned)),this.dragAndDropService.addDropTarget(this)},t.prototype.getIconName=function(){return this.currentDropListener.getIconName()},t.prototype.isDropColumnInPivotMode=function(e){return this.columnModel.isPivotMode()&&e.dragSource.type===Te.ToolPanel},t.prototype.onDragEnter=function(e){this.currentDropListener=this.isDropColumnInPivotMode(e)?this.bodyDropPivotTarget:this.moveColumnFeature,this.currentDropListener.onDragEnter(e)},t.prototype.onDragLeave=function(e){this.currentDropListener.onDragLeave(e)},t.prototype.onDragging=function(e){this.currentDropListener.onDragging(e)},t.prototype.onDragStop=function(e){this.currentDropListener.onDragStop(e)},fo([v("dragAndDropService")],t.prototype,"dragAndDropService",void 0),fo([v("columnModel")],t.prototype,"columnModel",void 0),fo([v("ctrlsService")],t.prototype,"ctrlsService",void 0),fo([F],t.prototype,"postConstruct",null),fo([F],t.prototype,"init",null),t}(D),Jv=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Ci=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Zv=function(n){Jv(t,n);function t(e){var r=n.call(this,t.TEMPLATE,e)||this;return r.headerCompVersion=0,r.column=e.getColumnGroupChild(),r.pinned=e.getPinned(),r}return t.prototype.postConstruct=function(){var e=this,r=this.getGui(),o=function(a,l){l!=null&&l!=""?r.setAttribute(a,l):r.removeAttribute(a)};o("col-id",this.column.getColId());var i={setWidth:function(a){return r.style.width=a},addOrRemoveCssClass:function(a,l){return e.addOrRemoveCssClass(a,l)},setAriaSort:function(a){return a?za(r,a):Ka(r)},setUserCompDetails:function(a){return e.setUserCompDetails(a)},getUserCompInstance:function(){return e.headerComp}};this.ctrl.setComp(i,this.getGui(),this.eResize,this.eHeaderCompWrapper);var s=this.ctrl.getSelectAllGui();this.eResize.insertAdjacentElement("afterend",s)},t.prototype.destroyHeaderComp=function(){this.headerComp&&(this.eHeaderCompWrapper.removeChild(this.headerCompGui),this.headerComp=this.destroyBean(this.headerComp),this.headerCompGui=void 0)},t.prototype.setUserCompDetails=function(e){var r=this;this.headerCompVersion++;var o=this.headerCompVersion;e.newAgStackInstance().then(function(i){return r.afterCompCreated(o,i)})},t.prototype.afterCompCreated=function(e,r){if(e!=this.headerCompVersion||!this.isAlive()){this.destroyBean(r);return}this.destroyHeaderComp(),this.headerComp=r,this.headerCompGui=r.getGui(),this.eHeaderCompWrapper.appendChild(this.headerCompGui),this.ctrl.setDragSource(this.getGui())},t.TEMPLATE=`
+ + +
`,Ci([L("eResize")],t.prototype,"eResize",void 0),Ci([L("eHeaderCompWrapper")],t.prototype,"eHeaderCompWrapper",void 0),Ci([F],t.prototype,"postConstruct",null),Ci([Se],t.prototype,"destroyHeaderComp",null),t}(gs),eg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),pu=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},tg=function(n){eg(t,n);function t(e){return n.call(this,t.TEMPLATE,e)||this}return t.prototype.postConstruct=function(){var e=this,r=this.getGui(),o=function(s,a){return a!=null?r.setAttribute(s,a):r.removeAttribute(s)};r.setAttribute("col-id",this.ctrl.getColId());var i={addOrRemoveCssClass:function(s,a){return e.addOrRemoveCssClass(s,a)},setResizableDisplayed:function(s){return $(e.eResize,s)},setWidth:function(s){return r.style.width=s},setAriaExpanded:function(s){return o("aria-expanded",s)},setUserCompDetails:function(s){return e.setUserCompDetails(s)},getUserCompInstance:function(){return e.headerGroupComp}};this.ctrl.setComp(i,r,this.eResize)},t.prototype.setUserCompDetails=function(e){var r=this;e.newAgStackInstance().then(function(o){return r.afterHeaderCompCreated(o)})},t.prototype.afterHeaderCompCreated=function(e){var r=this,o=function(){return r.destroyBean(e)};if(!this.isAlive()){o();return}var i=this.getGui(),s=e.getGui();i.appendChild(s),this.addDestroyFunc(o),this.headerGroupComp=e,this.ctrl.setDragSource(i)},t.TEMPLATE=`
+ +
`,pu([L("eResize")],t.prototype,"eResize",void 0),pu([F],t.prototype,"postConstruct",null),t}(gs),rg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),du=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},ge;(function(n){n.COLUMN_GROUP="group",n.COLUMN="column",n.FLOATING_FILTER="filter"})(ge||(ge={}));var og=function(n){rg(t,n);function t(e){var r=n.call(this)||this;return r.headerComps={},r.ctrl=e,r.setTemplate('
')),r}return t.prototype.init=function(){var e=this;yn(this.getGui(),this.ctrl.getAriaRowIndex());var r={setHeight:function(o){return e.getGui().style.height=o},setTop:function(o){return e.getGui().style.top=o},setHeaderCtrls:function(o,i){return e.setHeaderCtrls(o,i)},setWidth:function(o){return e.getGui().style.width=o}};this.ctrl.setComp(r)},t.prototype.destroyHeaderCtrls=function(){this.setHeaderCtrls([],!1)},t.prototype.setHeaderCtrls=function(e,r){var o=this;if(this.isAlive()){var i=this.headerComps;if(this.headerComps={},e.forEach(function(l){var u=l.getInstanceId(),c=i[u];delete i[u],c==null&&(c=o.createHeaderComp(l),o.getGui().appendChild(c.getGui())),o.headerComps[u]=c}),ye(i,function(l,u){o.getGui().removeChild(u.getGui()),o.destroyBean(u)}),r){var s=It(this.headerComps);s.sort(function(l,u){var c=l.getCtrl().getColumnGroupChild().getLeft(),p=u.getCtrl().getColumnGroupChild().getLeft();return c-p});var a=s.map(function(l){return l.getGui()});jn(this.getGui(),a)}}},t.prototype.createHeaderComp=function(e){var r;switch(this.ctrl.getType()){case ge.COLUMN_GROUP:r=new tg(e);break;case ge.FLOATING_FILTER:r=new hf(e);break;default:r=new Zv(e);break}return this.createBean(r),r.setParentComponent(this),r},du([F],t.prototype,"init",null),du([Se],t.prototype,"destroyHeaderCtrls",null),t}(k),ig=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),gr=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},ng=0,Si=function(n){ig(t,n);function t(e,r,o){var i=n.call(this)||this;return i.resizeToggleTimeout=0,i.resizeMultiplier=1,i.resizeFeature=null,i.lastFocusEvent=null,i.dragSource=null,i.columnGroupChild=e,i.parentRowCtrl=o,i.beans=r,i.instanceId=e.getUniqueId()+"-"+ng++,i}return t.prototype.postConstruct=function(){var e=this;this.addManagedPropertyListeners(["suppressHeaderFocus"],function(){return e.refreshTabIndex()})},t.prototype.shouldStopEventPropagation=function(e){var r=this.focusService.getFocusedHeader(),o=r.headerRowIndex,i=r.column;return ll(this.gridOptionsService,e,o,i)},t.prototype.getWrapperHasFocus=function(){var e=this.gridOptionsService.getDocument(),r=e.activeElement;return r===this.eGui},t.prototype.setGui=function(e){this.eGui=e,this.addDomData(),this.addManagedListener(this.beans.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.onDisplayedColumnsChanged(),this.refreshTabIndex()},t.prototype.onDisplayedColumnsChanged=function(){!this.comp||!this.column||(this.refreshFirstAndLastStyles(),this.refreshAriaColIndex())},t.prototype.refreshFirstAndLastStyles=function(){var e=this,r=e.comp,o=e.column,i=e.beans;hi.refreshFirstAndLastStyles(r,o,i.columnModel)},t.prototype.refreshAriaColIndex=function(){var e=this,r=e.beans,o=e.column,i=r.columnModel.getAriaColumnIndex(o);mn(this.eGui,i)},t.prototype.addResizeAndMoveKeyboardListeners=function(){this.resizeFeature&&(this.addManagedListener(this.eGui,"keydown",this.onGuiKeyDown.bind(this)),this.addManagedListener(this.eGui,"keyup",this.onGuiKeyUp.bind(this)))},t.prototype.refreshTabIndex=function(){var e=this.gridOptionsService.get("suppressHeaderFocus");e?this.eGui.removeAttribute("tabindex"):this.eGui.setAttribute("tabindex","-1")},t.prototype.onGuiKeyDown=function(e){var r,o=this.gridOptionsService.getDocument(),i=o.activeElement,s=e.key===_.LEFT||e.key===_.RIGHT;if(this.isResizing&&(e.preventDefault(),e.stopImmediatePropagation()),!(i!==this.eGui||!e.shiftKey&&!e.altKey)&&((this.isResizing||s)&&(e.preventDefault(),e.stopImmediatePropagation()),!!s)){var a=e.key===_.LEFT!==this.gridOptionsService.get("enableRtl"),l=Ue[a?"Left":"Right"];if(e.altKey){this.isResizing=!0,this.resizeMultiplier+=1;var u=this.getViewportAdjustedResizeDiff(e);this.resizeHeader(u,e.shiftKey),(r=this.resizeFeature)===null||r===void 0||r.toggleColumnResizing(!0)}else this.moveHeader(l)}},t.prototype.getViewportAdjustedResizeDiff=function(e){var r=this.getResizeDiff(e),o=this.column.getPinned();if(o){var i=this.pinnedWidthService.getPinnedLeftWidth(),s=this.pinnedWidthService.getPinnedRightWidth(),a=ir(this.ctrlsService.getGridBodyCtrl().getBodyViewportElement())-50;if(i+s+r>a)if(a>i+s)r=a-i-s;else return 0}return r},t.prototype.getResizeDiff=function(e){var r=e.key===_.LEFT!==this.gridOptionsService.get("enableRtl"),o=this.column.getPinned(),i=this.gridOptionsService.get("enableRtl");return o&&i!==(o==="right")&&(r=!r),(r?-1:1)*this.resizeMultiplier},t.prototype.onGuiKeyUp=function(){var e=this;this.isResizing&&(this.resizeToggleTimeout&&(window.clearTimeout(this.resizeToggleTimeout),this.resizeToggleTimeout=0),this.isResizing=!1,this.resizeMultiplier=1,this.resizeToggleTimeout=setTimeout(function(){var r;(r=e.resizeFeature)===null||r===void 0||r.toggleColumnResizing(!1)},150))},t.prototype.handleKeyDown=function(e){var r=this.getWrapperHasFocus();switch(e.key){case _.PAGE_DOWN:case _.PAGE_UP:case _.PAGE_HOME:case _.PAGE_END:r&&e.preventDefault()}},t.prototype.addDomData=function(){var e=this,r=t.DOM_DATA_KEY_HEADER_CTRL;this.gridOptionsService.setDomData(this.eGui,r,this),this.addDestroyFunc(function(){return e.gridOptionsService.setDomData(e.eGui,r,null)})},t.prototype.getGui=function(){return this.eGui},t.prototype.focus=function(e){return this.eGui?(this.lastFocusEvent=e||null,this.eGui.focus(),!0):!1},t.prototype.getRowIndex=function(){return this.parentRowCtrl.getRowIndex()},t.prototype.getParentRowCtrl=function(){return this.parentRowCtrl},t.prototype.getPinned=function(){return this.parentRowCtrl.getPinned()},t.prototype.getInstanceId=function(){return this.instanceId},t.prototype.getColumnGroupChild=function(){return this.columnGroupChild},t.prototype.removeDragSource=function(){this.dragSource&&(this.dragAndDropService.removeDragSource(this.dragSource),this.dragSource=null)},t.prototype.handleContextMenuMouseEvent=function(e,r,o){var i=e??r;this.gridOptionsService.get("preventDefaultOnContextMenu")&&i.preventDefault();var s=o instanceof J?o:void 0;this.menuService.isHeaderContextMenuEnabled(s)&&this.menuService.showHeaderContextMenu(s,e,r),this.dispatchColumnMouseEvent(g.EVENT_COLUMN_HEADER_CONTEXT_MENU,o)},t.prototype.dispatchColumnMouseEvent=function(e,r){var o={type:e,column:r};this.eventService.dispatchEvent(o)},t.prototype.destroy=function(){n.prototype.destroy.call(this),this.removeDragSource(),this.comp=null,this.column=null,this.resizeFeature=null,this.lastFocusEvent=null,this.columnGroupChild=null,this.parentRowCtrl=null,this.eGui=null},t.DOM_DATA_KEY_HEADER_CTRL="headerCtrl",gr([v("pinnedWidthService")],t.prototype,"pinnedWidthService",void 0),gr([v("focusService")],t.prototype,"focusService",void 0),gr([v("userComponentFactory")],t.prototype,"userComponentFactory",void 0),gr([v("ctrlsService")],t.prototype,"ctrlsService",void 0),gr([v("dragAndDropService")],t.prototype,"dragAndDropService",void 0),gr([v("menuService")],t.prototype,"menuService",void 0),gr([F],t.prototype,"postConstruct",null),t}(D),sg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),ag=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Os=function(n){sg(t,n);function t(e,r,o,i){var s=n.call(this)||this;return s.columnOrGroup=e,s.eCell=r,s.ariaEl=s.eCell.querySelector("[role=columnheader]")||s.eCell,s.colsSpanning=i,s.beans=o,s}return t.prototype.setColsSpanning=function(e){this.colsSpanning=e,this.onLeftChanged()},t.prototype.getColumnOrGroup=function(){return this.beans.gridOptionsService.get("enableRtl")&&this.colsSpanning?q(this.colsSpanning):this.columnOrGroup},t.prototype.postConstruct=function(){this.addManagedListener(this.columnOrGroup,J.EVENT_LEFT_CHANGED,this.onLeftChanged.bind(this)),this.setLeftFirstTime(),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,this.onLeftChanged.bind(this)),this.addManagedPropertyListener("domLayout",this.onLeftChanged.bind(this))},t.prototype.setLeftFirstTime=function(){var e=this.beans.gridOptionsService.get("suppressColumnMoveAnimation"),r=P(this.columnOrGroup.getOldLeft()),o=this.beans.columnAnimationService.isActive()&&r&&!e;o?this.animateInLeft():this.onLeftChanged()},t.prototype.animateInLeft=function(){var e=this,r=this.getColumnOrGroup(),o=r.getLeft(),i=r.getOldLeft(),s=this.modifyLeftForPrintLayout(r,i),a=this.modifyLeftForPrintLayout(r,o);this.setLeft(s),this.actualLeft=a,this.beans.columnAnimationService.executeNextVMTurn(function(){e.actualLeft===a&&e.setLeft(a)})},t.prototype.onLeftChanged=function(){var e=this.getColumnOrGroup(),r=e.getLeft();this.actualLeft=this.modifyLeftForPrintLayout(e,r),this.setLeft(this.actualLeft)},t.prototype.modifyLeftForPrintLayout=function(e,r){var o=this.beans.gridOptionsService.isDomLayout("print");if(!o||e.getPinned()==="left")return r;var i=this.beans.columnModel.getDisplayedColumnsLeftWidth();if(e.getPinned()==="right"){var s=this.beans.columnModel.getBodyContainerWidth();return i+s+r}return i+r},t.prototype.setLeft=function(e){if(P(e)&&(this.eCell.style.left="".concat(e,"px")),this.columnOrGroup instanceof J)this.columnOrGroup;else{var r=this.columnOrGroup,o=r.getLeafColumns();if(!o.length)return;o.length>1&&Ua(this.ariaEl,o.length),o[0]}},ag([F],t.prototype,"postConstruct",null),t}(D),lg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),hu=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Ts=function(n){lg(t,n);function t(e,r){var o=n.call(this)||this;return o.columns=e,o.element=r,o}return t.prototype.postConstruct=function(){this.gridOptionsService.get("columnHoverHighlight")&&this.addMouseHoverListeners()},t.prototype.addMouseHoverListeners=function(){this.addManagedListener(this.element,"mouseout",this.onMouseOut.bind(this)),this.addManagedListener(this.element,"mouseover",this.onMouseOver.bind(this))},t.prototype.onMouseOut=function(){this.columnHoverService.clearMouseOver()},t.prototype.onMouseOver=function(){this.columnHoverService.setMouseOver(this.columns)},hu([v("columnHoverService")],t.prototype,"columnHoverService",void 0),hu([F],t.prototype,"postConstruct",null),t}(D),ug=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),cg=function(n){ug(t,n);function t(e,r,o){var i=n.call(this,e,r,o)||this;return i.iconCreated=!1,i.column=e,i}return t.prototype.setComp=function(e,r,o,i){this.comp=e,this.eButtonShowMainFilter=o,this.eFloatingFilterBody=i,this.setGui(r),this.setupActive(),this.setupWidth(),this.setupLeft(),this.setupHover(),this.setupFocus(),this.setupAria(),this.setupFilterButton(),this.setupUserComp(),this.setupSyncWithFilter(),this.setupUi(),this.addManagedListener(this.eButtonShowMainFilter,"click",this.showParentFilter.bind(this)),this.setupFilterChangedListener(),this.addManagedListener(this.column,J.EVENT_COL_DEF_CHANGED,this.onColDefChanged.bind(this))},t.prototype.resizeHeader=function(){},t.prototype.moveHeader=function(){},t.prototype.setupActive=function(){var e=this.column.getColDef(),r=!!e.filter,o=!!e.floatingFilter;this.active=r&&o},t.prototype.setupUi=function(){if(this.comp.setButtonWrapperDisplayed(!this.suppressFilterButton&&this.active),this.comp.addOrRemoveBodyCssClass("ag-floating-filter-full-body",this.suppressFilterButton),this.comp.addOrRemoveBodyCssClass("ag-floating-filter-body",!this.suppressFilterButton),!(!this.active||this.iconCreated)){var e=ne("filter",this.gridOptionsService,this.column);e&&(this.iconCreated=!0,this.eButtonShowMainFilter.appendChild(e))}},t.prototype.setupFocus=function(){this.createManagedBean(new ar(this.eGui,{shouldStopEventPropagation:this.shouldStopEventPropagation.bind(this),onTabKeyDown:this.onTabKeyDown.bind(this),handleKeyDown:this.handleKeyDown.bind(this),onFocusIn:this.onFocusIn.bind(this)}))},t.prototype.setupAria=function(){var e=this.localeService.getLocaleTextFunc();Ht(this.eButtonShowMainFilter,e("ariaFilterMenuOpen","Open Filter Menu"))},t.prototype.onTabKeyDown=function(e){var r=this.gridOptionsService.getDocument(),o=r.activeElement,i=o===this.eGui;if(!i){var s=this.focusService.findNextFocusableElement(this.eGui,null,e.shiftKey);if(s){this.beans.headerNavigationService.scrollToColumn(this.column),e.preventDefault(),s.focus();return}var a=this.findNextColumnWithFloatingFilter(e.shiftKey);a&&this.focusService.focusHeaderPosition({headerPosition:{headerRowIndex:this.getParentRowCtrl().getRowIndex(),column:a},event:e})&&e.preventDefault()}},t.prototype.findNextColumnWithFloatingFilter=function(e){var r=this.beans.columnModel,o=this.column;do if(o=e?r.getDisplayedColBefore(o):r.getDisplayedColAfter(o),!o)break;while(!o.getColDef().filter||!o.getColDef().floatingFilter);return o},t.prototype.handleKeyDown=function(e){n.prototype.handleKeyDown.call(this,e);var r=this.getWrapperHasFocus();switch(e.key){case _.UP:case _.DOWN:r||e.preventDefault();case _.LEFT:case _.RIGHT:if(r)return;e.stopPropagation();case _.ENTER:r&&this.focusService.focusInto(this.eGui)&&e.preventDefault();break;case _.ESCAPE:r||this.eGui.focus()}},t.prototype.onFocusIn=function(e){var r=this.eGui.contains(e.relatedTarget);if(!r){var o=!!e.relatedTarget&&!e.relatedTarget.classList.contains("ag-floating-filter"),i=!!e.relatedTarget&&or(e.relatedTarget,"ag-floating-filter");if(o&&i&&e.target===this.eGui){var s=this.lastFocusEvent,a=!!(s&&s.key===_.TAB);if(s&&a){var l=s.shiftKey;this.focusService.focusInto(this.eGui,l)}}var u=this.getRowIndex();this.beans.focusService.setFocusedHeader(u,this.column)}},t.prototype.setupHover=function(){var e=this;this.createManagedBean(new Ts([this.column],this.eGui));var r=function(){if(e.gridOptionsService.get("columnHoverHighlight")){var o=e.beans.columnHoverService.isHovered(e.column);e.comp.addOrRemoveCssClass("ag-column-hover",o)}};this.addManagedListener(this.eventService,g.EVENT_COLUMN_HOVER_CHANGED,r),r()},t.prototype.setupLeft=function(){var e=new Os(this.column,this.eGui,this.beans);this.createManagedBean(e)},t.prototype.setupFilterButton=function(){this.suppressFilterButton=!this.menuService.isFloatingFilterButtonEnabled(this.column),this.highlightFilterButtonWhenActive=!this.menuService.isLegacyMenuEnabled()},t.prototype.setupUserComp=function(){var e=this;if(this.active){var r=this.beans.filterManager.getFloatingFilterCompDetails(this.column,function(){return e.showParentFilter()});r&&this.setCompDetails(r)}},t.prototype.setCompDetails=function(e){this.userCompDetails=e,this.comp.setCompDetails(e)},t.prototype.showParentFilter=function(){var e=this.suppressFilterButton?this.eFloatingFilterBody:this.eButtonShowMainFilter;this.menuService.showFilterMenu({column:this.column,buttonElement:e,containerType:"floatingFilter",positionBy:"button"})},t.prototype.setupSyncWithFilter=function(){var e=this;if(this.active){var r=this.beans.filterManager,o=function(i){var s=e.comp.getFloatingFilterComp();s&&s.then(function(a){if(a){var l=r.getCurrentFloatingFilterParentModel(e.column);a.onParentModelChanged(l,i)}})};this.destroySyncListener=this.addManagedListener(this.column,J.EVENT_FILTER_CHANGED,o),r.isFilterActive(this.column)&&o(null)}},t.prototype.setupWidth=function(){var e=this,r=function(){var o="".concat(e.column.getActualWidth(),"px");e.comp.setWidth(o)};this.addManagedListener(this.column,J.EVENT_WIDTH_CHANGED,r),r()},t.prototype.setupFilterChangedListener=function(){this.active&&(this.destroyFilterChangedListener=this.addManagedListener(this.column,J.EVENT_FILTER_CHANGED,this.updateFilterButton.bind(this)),this.updateFilterButton())},t.prototype.updateFilterButton=function(){if(!this.suppressFilterButton&&this.comp){var e=this.beans.filterManager.isFilterAllowed(this.column);this.comp.setButtonWrapperDisplayed(e),this.highlightFilterButtonWhenActive&&e&&this.eButtonShowMainFilter.classList.toggle("ag-filter-active",this.column.isFilterActive())}},t.prototype.onColDefChanged=function(){var e=this,r,o,i=this.active;this.setupActive();var s=!i&&this.active;i&&!this.active&&((r=this.destroySyncListener)===null||r===void 0||r.call(this),(o=this.destroyFilterChangedListener)===null||o===void 0||o.call(this));var a=this.active?this.beans.filterManager.getFloatingFilterCompDetails(this.column,function(){return e.showParentFilter()}):null,l=this.comp.getFloatingFilterComp();!l||!a?this.updateCompDetails(a,s):l.then(function(u){var c;!u||e.beans.filterManager.areFilterCompsDifferent((c=e.userCompDetails)!==null&&c!==void 0?c:null,a)?e.updateCompDetails(a,s):e.updateFloatingFilterParams(a)})},t.prototype.updateCompDetails=function(e,r){this.isAlive()&&(this.setCompDetails(e),this.setupFilterButton(),this.setupUi(),r&&(this.setupSyncWithFilter(),this.setupFilterChangedListener()))},t.prototype.updateFloatingFilterParams=function(e){var r;if(e){var o=e.params;(r=this.comp.getFloatingFilterComp())===null||r===void 0||r.then(function(i){var s=!1;if(i!=null&&i.refresh&&typeof i.refresh=="function"){var a=i.refresh(o);a!==null&&(s=!0)}if(!s&&(i!=null&&i.onParamsUpdated)&&typeof i.onParamsUpdated=="function"){var a=i.onParamsUpdated(o);a!==null&&V("Custom floating filter method 'onParamsUpdated' is deprecated. Use 'refresh' instead.")}})}},t.prototype.destroy=function(){n.prototype.destroy.call(this),this.eButtonShowMainFilter=null,this.eFloatingFilterBody=null,this.userCompDetails=null,this.destroySyncListener=null,this.destroyFilterChangedListener=null},t}(Si),pg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),vo=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},dg=function(n){pg(t,n);function t(e,r,o,i,s){var a=n.call(this)||this;return a.pinned=e,a.column=r,a.eResize=o,a.comp=i,a.ctrl=s,a}return t.prototype.postConstruct=function(){var e=this,r=[],o,i,s=function(){if($(e.eResize,o),!!o){var u=e.horizontalResizeService.addResizeBar({eResizeBar:e.eResize,onResizeStart:e.onResizeStart.bind(e),onResizing:e.onResizing.bind(e,!1),onResizeEnd:e.onResizing.bind(e,!0)});if(r.push(u),i){var c=e.gridOptionsService.get("skipHeaderOnAutoSize"),p=function(){e.columnModel.autoSizeColumn(e.column,"uiColumnResized",c)};e.eResize.addEventListener("dblclick",p);var d=new me(e.eResize);d.addEventListener(me.EVENT_DOUBLE_TAP,p),r.push(function(){e.eResize.removeEventListener("dblclick",p),d.removeEventListener(me.EVENT_DOUBLE_TAP,p),d.destroy()})}}},a=function(){r.forEach(function(u){return u()}),r.length=0},l=function(){var u=e.column.isResizable(),c=!e.gridOptionsService.get("suppressAutoSize")&&!e.column.getColDef().suppressAutoSize,p=u!==o||c!==i;p&&(o=u,i=c,a(),s())};l(),this.addDestroyFunc(a),this.ctrl.addRefreshFunction(l)},t.prototype.onResizing=function(e,r){var o=this,i=o.column,s=o.lastResizeAmount,a=o.resizeStartWidth,l=this.normaliseResizeAmount(r),u=a+l,c=[{key:i,newWidth:u}];if(this.column.getPinned()){var p=this.pinnedWidthService.getPinnedLeftWidth(),d=this.pinnedWidthService.getPinnedRightWidth(),h=ir(this.ctrlsService.getGridBodyCtrl().getBodyViewportElement())-50;if(p+d+(l-s)>h)return}this.lastResizeAmount=l,this.columnModel.setColumnWidths(c,this.resizeWithShiftKey,e,"uiColumnResized"),e&&this.toggleColumnResizing(!1)},t.prototype.onResizeStart=function(e){this.resizeStartWidth=this.column.getActualWidth(),this.lastResizeAmount=0,this.resizeWithShiftKey=e,this.toggleColumnResizing(!0)},t.prototype.toggleColumnResizing=function(e){this.comp.addOrRemoveCssClass("ag-column-resizing",e)},t.prototype.normaliseResizeAmount=function(e){var r=e,o=this.pinned!=="left",i=this.pinned==="right";return this.gridOptionsService.get("enableRtl")?o&&(r*=-1):i&&(r*=-1),r},vo([v("horizontalResizeService")],t.prototype,"horizontalResizeService",void 0),vo([v("pinnedWidthService")],t.prototype,"pinnedWidthService",void 0),vo([v("ctrlsService")],t.prototype,"ctrlsService",void 0),vo([v("columnModel")],t.prototype,"columnModel",void 0),vo([F],t.prototype,"postConstruct",null),t}(D),hg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),fu=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},fg=function(n){hg(t,n);function t(e){var r=n.call(this)||this;return r.cbSelectAllVisible=!1,r.processingEventFromCheckbox=!1,r.column=e,r}return t.prototype.onSpaceKeyDown=function(e){var r=this.cbSelectAll,o=this.gridOptionsService.getDocument();r.isDisplayed()&&!r.getGui().contains(o.activeElement)&&(e.preventDefault(),r.setValue(!r.getValue()))},t.prototype.getCheckboxGui=function(){return this.cbSelectAll.getGui()},t.prototype.setComp=function(e){this.headerCellCtrl=e,this.cbSelectAll=this.createManagedBean(new ti),this.cbSelectAll.addCssClass("ag-header-select-all"),le(this.cbSelectAll.getGui(),"presentation"),this.showOrHideSelectAll(),this.addManagedListener(this.eventService,g.EVENT_NEW_COLUMNS_LOADED,this.onNewColumnsLoaded.bind(this)),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_SELECTION_CHANGED,this.onSelectionChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_PAGINATION_CHANGED,this.onSelectionChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_MODEL_UPDATED,this.onModelChanged.bind(this)),this.addManagedListener(this.cbSelectAll,g.EVENT_FIELD_VALUE_CHANGED,this.onCbSelectAll.bind(this)),zo(this.cbSelectAll.getGui(),!0),this.cbSelectAll.getInputElement().setAttribute("tabindex","-1"),this.refreshSelectAllLabel()},t.prototype.onNewColumnsLoaded=function(){this.showOrHideSelectAll()},t.prototype.onDisplayedColumnsChanged=function(){this.isAlive()&&this.showOrHideSelectAll()},t.prototype.showOrHideSelectAll=function(){this.cbSelectAllVisible=this.isCheckboxSelection(),this.cbSelectAll.setDisplayed(this.cbSelectAllVisible,{skipAriaHidden:!0}),this.cbSelectAllVisible&&(this.checkRightRowModelType("selectAllCheckbox"),this.checkSelectionType("selectAllCheckbox"),this.updateStateOfCheckbox()),this.refreshSelectAllLabel()},t.prototype.onModelChanged=function(){this.cbSelectAllVisible&&this.updateStateOfCheckbox()},t.prototype.onSelectionChanged=function(){this.cbSelectAllVisible&&this.updateStateOfCheckbox()},t.prototype.updateStateOfCheckbox=function(){if(!this.processingEventFromCheckbox){this.processingEventFromCheckbox=!0;var e=this.selectionService.getSelectAllState(this.isFilteredOnly(),this.isCurrentPageOnly());this.cbSelectAll.setValue(e);var r=this.selectionService.hasNodesToSelect(this.isFilteredOnly(),this.isCurrentPageOnly());this.cbSelectAll.setDisabled(!r),this.refreshSelectAllLabel(),this.processingEventFromCheckbox=!1}},t.prototype.refreshSelectAllLabel=function(){var e=this.localeService.getLocaleTextFunc(),r=this.cbSelectAll.getValue(),o=r?e("ariaChecked","checked"):e("ariaUnchecked","unchecked"),i=e("ariaRowSelectAll","Press Space to toggle all rows selection");this.cbSelectAllVisible?this.headerCellCtrl.setAriaDescriptionProperty("selectAll","".concat(i," (").concat(o,")")):this.headerCellCtrl.setAriaDescriptionProperty("selectAll",null),this.cbSelectAll.setInputAriaLabel("".concat(i," (").concat(o,")")),this.headerCellCtrl.announceAriaDescription()},t.prototype.checkSelectionType=function(e){var r=this.gridOptionsService.get("rowSelection")==="multiple";return r?!0:(console.warn("AG Grid: ".concat(e," is only available if using 'multiple' rowSelection.")),!1)},t.prototype.checkRightRowModelType=function(e){var r=this.rowModel.getType(),o=r==="clientSide"||r==="serverSide";return o?!0:(console.warn("AG Grid: ".concat(e," is only available if using 'clientSide' or 'serverSide' rowModelType, you are using ").concat(r,".")),!1)},t.prototype.onCbSelectAll=function(){if(!this.processingEventFromCheckbox&&this.cbSelectAllVisible){var e=this.cbSelectAll.getValue(),r=this.isFilteredOnly(),o=this.isCurrentPageOnly(),i="uiSelectAll";o?i="uiSelectAllCurrentPage":r&&(i="uiSelectAllFiltered");var s={source:i,justFiltered:r,justCurrentPage:o};e?this.selectionService.selectAllRowNodes(s):this.selectionService.deselectAllRowNodes(s)}},t.prototype.isCheckboxSelection=function(){var e=this.column.getColDef().headerCheckboxSelection;if(typeof e=="function"){var r=e,o=this.gridOptionsService.addGridCommonParams({column:this.column,colDef:this.column.getColDef()});e=r(o)}return e?this.checkRightRowModelType("headerCheckboxSelection")&&this.checkSelectionType("headerCheckboxSelection"):!1},t.prototype.isFilteredOnly=function(){return!!this.column.getColDef().headerCheckboxSelectionFilteredOnly},t.prototype.isCurrentPageOnly=function(){return!!this.column.getColDef().headerCheckboxSelectionCurrentPageOnly},fu([v("rowModel")],t.prototype,"rowModel",void 0),fu([v("selectionService")],t.prototype,"selectionService",void 0),t}(D),vg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),gg=function(n){vg(t,n);function t(e,r,o){var i=n.call(this,e,r,o)||this;return i.refreshFunctions=[],i.userHeaderClasses=new Set,i.ariaDescriptionProperties=new Map,i.column=e,i}return t.prototype.setComp=function(e,r,o,i){var s=this;this.comp=e,this.setGui(r),this.updateState(),this.setupWidth(),this.setupMovingCss(),this.setupMenuClass(),this.setupSortableClass(),this.setupWrapTextClass(),this.refreshSpanHeaderHeight(),this.setupAutoHeight(i),this.addColumnHoverListener(),this.setupFilterClass(),this.setupClassesFromColDef(),this.setupTooltip(),this.addActiveHeaderMouseListeners(),this.setupSelectAll(),this.setupUserComp(),this.refreshAria(),this.resizeFeature=this.createManagedBean(new dg(this.getPinned(),this.column,o,e,this)),this.createManagedBean(new Ts([this.column],r)),this.createManagedBean(new Os(this.column,r,this.beans)),this.createManagedBean(new ar(r,{shouldStopEventPropagation:function(a){return s.shouldStopEventPropagation(a)},onTabKeyDown:function(){return null},handleKeyDown:this.handleKeyDown.bind(this),onFocusIn:this.onFocusIn.bind(this),onFocusOut:this.onFocusOut.bind(this)})),this.addResizeAndMoveKeyboardListeners(),this.addManagedPropertyListeners(["suppressMovableColumns","suppressMenuHide","suppressAggFuncInHeader"],this.refresh.bind(this)),this.addManagedListener(this.column,J.EVENT_COL_DEF_CHANGED,this.refresh.bind(this)),this.addManagedListener(this.eventService,g.EVENT_COLUMN_VALUE_CHANGED,this.onColumnValueChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_COLUMN_ROW_GROUP_CHANGED,this.onColumnRowGroupChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_COLUMN_PIVOT_CHANGED,this.onColumnPivotChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_HEADER_HEIGHT_CHANGED,this.onHeaderHeightChanged.bind(this))},t.prototype.resizeHeader=function(e,r){var o,i;if(this.column.isResizable()){var s=this.column.getActualWidth(),a=(o=this.column.getMinWidth())!==null&&o!==void 0?o:0,l=(i=this.column.getMaxWidth())!==null&&i!==void 0?i:Number.MAX_SAFE_INTEGER,u=Math.min(Math.max(s+e,a),l);this.beans.columnModel.setColumnWidths([{key:this.column,newWidth:u}],r,!0,"uiColumnResized")}},t.prototype.moveHeader=function(e){var r=this,o=r.eGui,i=r.column,s=r.gridOptionsService,a=r.ctrlsService,l=this.getPinned(),u=o.getBoundingClientRect().left,c=i.getActualWidth(),p=s.get("enableRtl"),d=e===Ue.Left!==p,h=vr.normaliseX(d?u-20:u+c+20,l,!0,s,a);vr.attemptMoveColumns({allMovingColumns:[i],isFromHeader:!0,hDirection:e,xPosition:h,pinned:l,fromEnter:!1,fakeEvent:!1,gridOptionsService:s,columnModel:this.beans.columnModel}),a.getGridBodyCtrl().getScrollFeature().ensureColumnVisible(i,"auto")},t.prototype.setupUserComp=function(){var e=this.lookupUserCompDetails();this.setCompDetails(e)},t.prototype.setCompDetails=function(e){this.userCompDetails=e,this.comp.setUserCompDetails(e)},t.prototype.lookupUserCompDetails=function(){var e=this.createParams(),r=this.column.getColDef();return this.userComponentFactory.getHeaderCompDetails(r,e)},t.prototype.createParams=function(){var e=this,r=this.gridOptionsService.addGridCommonParams({column:this.column,displayName:this.displayName,enableSorting:this.column.isSortable(),enableMenu:this.menuEnabled,enableFilterButton:this.openFilterEnabled&&this.menuService.isHeaderFilterButtonEnabled(this.column),enableFilterIcon:!this.openFilterEnabled||this.menuService.isLegacyMenuEnabled(),showColumnMenu:function(o){e.menuService.showColumnMenu({column:e.column,buttonElement:o,positionBy:"button"})},showColumnMenuAfterMouseClick:function(o){e.menuService.showColumnMenu({column:e.column,mouseEvent:o,positionBy:"mouse"})},showFilter:function(o){e.menuService.showFilterMenu({column:e.column,buttonElement:o,containerType:"columnFilter",positionBy:"button"})},progressSort:function(o){e.beans.sortController.progressSort(e.column,!!o,"uiColumnSorted")},setSort:function(o,i){e.beans.sortController.setSortForColumn(e.column,o,!!i,"uiColumnSorted")},eGridHeader:this.getGui()});return r},t.prototype.setupSelectAll=function(){this.selectAllFeature=this.createManagedBean(new fg(this.column)),this.selectAllFeature.setComp(this)},t.prototype.getSelectAllGui=function(){return this.selectAllFeature.getCheckboxGui()},t.prototype.handleKeyDown=function(e){n.prototype.handleKeyDown.call(this,e),e.key===_.SPACE&&this.selectAllFeature.onSpaceKeyDown(e),e.key===_.ENTER&&this.onEnterKeyDown(e),e.key===_.DOWN&&e.altKey&&this.showMenuOnKeyPress(e,!1)},t.prototype.onEnterKeyDown=function(e){if(e.ctrlKey||e.metaKey)this.showMenuOnKeyPress(e,!0);else if(this.sortable){var r=e.shiftKey;this.beans.sortController.progressSort(this.column,r,"uiColumnSorted")}},t.prototype.showMenuOnKeyPress=function(e,r){var o=this.comp.getUserCompInstance();!o||!(o instanceof cs)||o.onMenuKeyboardShortcut(r)&&e.preventDefault()},t.prototype.onFocusIn=function(e){if(!this.getGui().contains(e.relatedTarget)){var r=this.getRowIndex();this.focusService.setFocusedHeader(r,this.column),this.announceAriaDescription()}this.focusService.isKeyboardMode()&&this.setActiveHeader(!0)},t.prototype.onFocusOut=function(e){this.getGui().contains(e.relatedTarget)||this.setActiveHeader(!1)},t.prototype.setupTooltip=function(){var e=this,r={getColumn:function(){return e.column},getColDef:function(){return e.column.getColDef()},getGui:function(){return e.eGui},getLocation:function(){return"header"},getTooltipValue:function(){var i=e.column.getColDef().headerTooltip;return i}},o=this.createManagedBean(new di(r,this.beans));o.setComp(this.eGui),this.refreshFunctions.push(function(){return o.refreshToolTip()})},t.prototype.setupClassesFromColDef=function(){var e=this,r=function(){var o=e.column.getColDef(),i=hi.getHeaderClassesFromColDef(o,e.gridOptionsService,e.column,null),s=e.userHeaderClasses;e.userHeaderClasses=new Set(i),i.forEach(function(a){s.has(a)?s.delete(a):e.comp.addOrRemoveCssClass(a,!0)}),s.forEach(function(a){return e.comp.addOrRemoveCssClass(a,!1)})};this.refreshFunctions.push(r),r()},t.prototype.setDragSource=function(e){var r=this;if(this.dragSourceElement=e,this.removeDragSource(),!(!e||!this.draggable)){var o=this,i=o.column,s=o.beans,a=o.displayName,l=o.dragAndDropService,u=o.gridOptionsService,c=s.columnModel,p=!this.gridOptionsService.get("suppressDragLeaveHidesColumns"),d=this.dragSource={type:Te.HeaderCell,eElement:e,getDefaultIconName:function(){return p?he.ICON_HIDE:he.ICON_NOT_ALLOWED},getDragItem:function(){return r.createDragItem(i)},dragItemName:a,onDragStarted:function(){p=!u.get("suppressDragLeaveHidesColumns"),i.setMoving(!0,"uiColumnMoved")},onDragStopped:function(){return i.setMoving(!1,"uiColumnMoved")},onGridEnter:function(h){var f;if(p){var y=((f=h==null?void 0:h.columns)===null||f===void 0?void 0:f.filter(function(m){return!m.getColDef().lockVisible}))||[];c.setColumnsVisible(y,!0,"uiColumnMoved")}},onGridExit:function(h){var f;if(p){var y=((f=h==null?void 0:h.columns)===null||f===void 0?void 0:f.filter(function(m){return!m.getColDef().lockVisible}))||[];c.setColumnsVisible(y,!1,"uiColumnMoved")}}};l.addDragSource(d,!0)}},t.prototype.createDragItem=function(e){var r={};return r[e.getId()]=e.isVisible(),{columns:[e],visibleState:r}},t.prototype.updateState=function(){this.menuEnabled=this.menuService.isColumnMenuInHeaderEnabled(this.column),this.openFilterEnabled=this.menuService.isFilterMenuInHeaderEnabled(this.column),this.sortable=this.column.isSortable(),this.displayName=this.calculateDisplayName(),this.draggable=this.workOutDraggable()},t.prototype.addRefreshFunction=function(e){this.refreshFunctions.push(e)},t.prototype.refresh=function(){this.updateState(),this.refreshHeaderComp(),this.refreshAria(),this.refreshFunctions.forEach(function(e){return e()})},t.prototype.refreshHeaderComp=function(){var e=this.lookupUserCompDetails(),r=this.comp.getUserCompInstance(),o=r!=null&&this.userCompDetails.componentClass==e.componentClass,i=o?this.attemptHeaderCompRefresh(e.params):!1;i?this.setDragSource(this.dragSourceElement):this.setCompDetails(e)},t.prototype.attemptHeaderCompRefresh=function(e){var r=this.comp.getUserCompInstance();if(!r||!r.refresh)return!1;var o=r.refresh(e);return o},t.prototype.calculateDisplayName=function(){return this.beans.columnModel.getDisplayNameForColumn(this.column,"header",!0)},t.prototype.checkDisplayName=function(){this.displayName!==this.calculateDisplayName()&&this.refresh()},t.prototype.workOutDraggable=function(){var e=this.column.getColDef(),r=this.gridOptionsService.get("suppressMovableColumns"),o=!r&&!e.suppressMovable&&!e.lockPosition;return!!o||!!e.enableRowGroup||!!e.enablePivot},t.prototype.onColumnRowGroupChanged=function(){this.checkDisplayName()},t.prototype.onColumnPivotChanged=function(){this.checkDisplayName()},t.prototype.onColumnValueChanged=function(){this.checkDisplayName()},t.prototype.setupWidth=function(){var e=this,r=function(){var o=e.column.getActualWidth();e.comp.setWidth("".concat(o,"px"))};this.addManagedListener(this.column,J.EVENT_WIDTH_CHANGED,r),r()},t.prototype.setupMovingCss=function(){var e=this,r=function(){e.comp.addOrRemoveCssClass("ag-header-cell-moving",e.column.isMoving())};this.addManagedListener(this.column,J.EVENT_MOVING_CHANGED,r),r()},t.prototype.setupMenuClass=function(){var e=this,r=function(){e.comp.addOrRemoveCssClass("ag-column-menu-visible",e.column.isMenuVisible())};this.addManagedListener(this.column,J.EVENT_MENU_VISIBLE_CHANGED,r),r()},t.prototype.setupSortableClass=function(){var e=this,r=function(){e.comp.addOrRemoveCssClass("ag-header-cell-sortable",!!e.sortable)};r(),this.addRefreshFunction(r),this.addManagedListener(this.eventService,J.EVENT_SORT_CHANGED,this.refreshAriaSort.bind(this))},t.prototype.setupFilterClass=function(){var e=this,r=function(){var o=e.column.isFilterActive();e.comp.addOrRemoveCssClass("ag-header-cell-filtered",o),e.refreshAria()};this.addManagedListener(this.column,J.EVENT_FILTER_ACTIVE_CHANGED,r),r()},t.prototype.setupWrapTextClass=function(){var e=this,r=function(){var o=!!e.column.getColDef().wrapHeaderText;e.comp.addOrRemoveCssClass("ag-header-cell-wrap-text",o)};r(),this.addRefreshFunction(r)},t.prototype.onDisplayedColumnsChanged=function(){n.prototype.onDisplayedColumnsChanged.call(this),this.isAlive()&&this.onHeaderHeightChanged()},t.prototype.onHeaderHeightChanged=function(){this.refreshSpanHeaderHeight()},t.prototype.refreshSpanHeaderHeight=function(){var e=this,r=e.eGui,o=e.column,i=e.comp,s=e.beans;if(!o.isSpanHeaderHeight()){r.style.removeProperty("top"),r.style.removeProperty("height"),i.addOrRemoveCssClass("ag-header-span-height",!1),i.addOrRemoveCssClass("ag-header-span-total",!1);return}var a=this.column.getColumnGroupPaddingInfo(),l=a.numberOfParents,u=a.isSpanningTotal;i.addOrRemoveCssClass("ag-header-span-height",l>0);var c=s.columnModel,p=c.getColumnHeaderRowHeight();if(l===0){i.addOrRemoveCssClass("ag-header-span-total",!1),r.style.setProperty("top","0px"),r.style.setProperty("height","".concat(p,"px"));return}i.addOrRemoveCssClass("ag-header-span-total",u);var d=c.isPivotMode(),h=d?c.getPivotGroupHeaderHeight():c.getGroupHeaderHeight(),f=l*h;r.style.setProperty("top","".concat(-f,"px")),r.style.setProperty("height","".concat(p+f,"px"))},t.prototype.setupAutoHeight=function(e){var r=this,o=this.beans,i=o.columnModel,s=o.resizeObserverService,a=function(h){if(r.isAlive()){var f=Bt(r.getGui()),y=f.paddingTop,m=f.paddingBottom,C=f.borderBottomWidth,w=f.borderTopWidth,E=y+m+C+w,S=e.offsetHeight,R=S+E;if(h<5){var O=r.beans.gridOptionsService.getDocument(),b=!O||!O.contains(e),A=R==0;if(b||A){window.setTimeout(function(){return a(h+1)},0);return}}i.setColumnHeaderHeight(r.column,R)}},l=!1,u,c=function(){var h=r.column.isAutoHeaderHeight();h&&!l&&p(),!h&&l&&d()},p=function(){l=!0,a(0),r.comp.addOrRemoveCssClass("ag-header-cell-auto-height",!0),u=s.observeResize(e,function(){return a(0)})},d=function(){l=!1,u&&u(),r.comp.addOrRemoveCssClass("ag-header-cell-auto-height",!1),u=void 0};c(),this.addDestroyFunc(function(){return d()}),this.addManagedListener(this.column,J.EVENT_WIDTH_CHANGED,function(){return l&&a(0)}),this.addManagedListener(this.eventService,J.EVENT_SORT_CHANGED,function(){l&&window.setTimeout(function(){return a(0)})}),this.addRefreshFunction(c)},t.prototype.refreshAriaSort=function(){if(this.sortable){var e=this.localeService.getLocaleTextFunc(),r=this.beans.sortController.getDisplaySortForColumn(this.column)||null;this.comp.setAriaSort(Ia(r)),this.setAriaDescriptionProperty("sort",e("ariaSortableColumn","Press ENTER to sort"))}else this.comp.setAriaSort(),this.setAriaDescriptionProperty("sort",null)},t.prototype.refreshAriaMenu=function(){if(this.menuEnabled){var e=this.localeService.getLocaleTextFunc();this.setAriaDescriptionProperty("menu",e("ariaMenuColumn","Press ALT DOWN to open column menu"))}else this.setAriaDescriptionProperty("menu",null)},t.prototype.refreshAriaFilterButton=function(){if(this.openFilterEnabled&&!this.menuService.isLegacyMenuEnabled()){var e=this.localeService.getLocaleTextFunc();this.setAriaDescriptionProperty("filterButton",e("ariaFilterColumn","Press CTRL ENTER to open filter"))}else this.setAriaDescriptionProperty("filterButton",null)},t.prototype.refreshAriaFiltered=function(){var e=this.localeService.getLocaleTextFunc(),r=this.column.isFilterActive();r?this.setAriaDescriptionProperty("filter",e("ariaColumnFiltered","Column Filtered")):this.setAriaDescriptionProperty("filter",null)},t.prototype.setAriaDescriptionProperty=function(e,r){r!=null?this.ariaDescriptionProperties.set(e,r):this.ariaDescriptionProperties.delete(e)},t.prototype.announceAriaDescription=function(){var e=this,r=this.beans.gridOptionsService.getDocument();if(this.eGui.contains(r.activeElement)){var o=Array.from(this.ariaDescriptionProperties.keys()).sort(function(i,s){return i==="filter"?-1:s.charCodeAt(0)-i.charCodeAt(0)}).map(function(i){return e.ariaDescriptionProperties.get(i)}).join(". ");this.beans.ariaAnnouncementService.announceValue(o)}},t.prototype.refreshAria=function(){this.refreshAriaSort(),this.refreshAriaMenu(),this.refreshAriaFilterButton(),this.refreshAriaFiltered()},t.prototype.addColumnHoverListener=function(){var e=this,r=function(){if(e.gridOptionsService.get("columnHoverHighlight")){var o=e.beans.columnHoverService.isHovered(e.column);e.comp.addOrRemoveCssClass("ag-column-hover",o)}};this.addManagedListener(this.eventService,g.EVENT_COLUMN_HOVER_CHANGED,r),r()},t.prototype.getColId=function(){return this.column.getColId()},t.prototype.addActiveHeaderMouseListeners=function(){var e=this,r=function(s){return e.handleMouseOverChange(s.type==="mouseenter")},o=function(){return e.dispatchColumnMouseEvent(g.EVENT_COLUMN_HEADER_CLICKED,e.column)},i=function(s){return e.handleContextMenuMouseEvent(s,void 0,e.column)};this.addManagedListener(this.getGui(),"mouseenter",r),this.addManagedListener(this.getGui(),"mouseleave",r),this.addManagedListener(this.getGui(),"click",o),this.addManagedListener(this.getGui(),"contextmenu",i)},t.prototype.handleMouseOverChange=function(e){this.setActiveHeader(e);var r=e?g.EVENT_COLUMN_HEADER_MOUSE_OVER:g.EVENT_COLUMN_HEADER_MOUSE_LEAVE,o={type:r,column:this.column};this.eventService.dispatchEvent(o)},t.prototype.setActiveHeader=function(e){this.comp.addOrRemoveCssClass("ag-header-active",e)},t.prototype.getAnchorElementForMenu=function(e){var r=this.comp.getUserCompInstance();return r instanceof cs?r.getAnchorElementForMenu(e):this.getGui()},t.prototype.destroy=function(){n.prototype.destroy.call(this),this.refreshFunctions=null,this.selectAllFeature=null,this.dragSourceElement=null,this.userCompDetails=null,this.userHeaderClasses=null,this.ariaDescriptionProperties=null},t}(Si),yg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),wi=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},mg=function(n){yg(t,n);function t(e,r,o,i){var s=n.call(this)||this;return s.eResize=r,s.comp=e,s.pinned=o,s.columnGroup=i,s}return t.prototype.postConstruct=function(){var e=this;if(!this.columnGroup.isResizable()){this.comp.setResizableDisplayed(!1);return}var r=this.horizontalResizeService.addResizeBar({eResizeBar:this.eResize,onResizeStart:this.onResizeStart.bind(this),onResizing:this.onResizing.bind(this,!1),onResizeEnd:this.onResizing.bind(this,!0)});if(this.addDestroyFunc(r),!this.gridOptionsService.get("suppressAutoSize")){var o=this.gridOptionsService.get("skipHeaderOnAutoSize");this.eResize.addEventListener("dblclick",function(){var i=[],s=e.columnGroup.getDisplayedLeafColumns();s.forEach(function(a){a.getColDef().suppressAutoSize||i.push(a.getColId())}),i.length>0&&e.columnModel.autoSizeColumns({columns:i,skipHeader:o,stopAtGroup:e.columnGroup,source:"uiColumnResized"}),e.resizeLeafColumnsToFit("uiColumnResized")})}},t.prototype.onResizeStart=function(e){var r=this.getInitialValues(e);this.storeLocalValues(r),this.toggleColumnResizing(!0)},t.prototype.onResizing=function(e,r,o){o===void 0&&(o="uiColumnResized");var i=this.normaliseDragChange(r),s=this.resizeStartWidth+i;this.resizeColumnsFromLocalValues(s,o,e)},t.prototype.getInitialValues=function(e){var r=this.getColumnsToResize(),o=this.getInitialSizeOfColumns(r),i=this.getSizeRatiosOfColumns(r,o),s={columnsToResize:r,resizeStartWidth:o,resizeRatios:i},a=null;if(e&&(a=this.columnModel.getDisplayedGroupAfter(this.columnGroup)),a){var l=a.getDisplayedLeafColumns(),u=s.groupAfterColumns=l.filter(function(p){return p.isResizable()}),c=s.groupAfterStartWidth=this.getInitialSizeOfColumns(u);s.groupAfterRatios=this.getSizeRatiosOfColumns(u,c)}else s.groupAfterColumns=void 0,s.groupAfterStartWidth=void 0,s.groupAfterRatios=void 0;return s},t.prototype.storeLocalValues=function(e){var r=e.columnsToResize,o=e.resizeStartWidth,i=e.resizeRatios,s=e.groupAfterColumns,a=e.groupAfterStartWidth,l=e.groupAfterRatios;this.resizeCols=r,this.resizeStartWidth=o,this.resizeRatios=i,this.resizeTakeFromCols=s,this.resizeTakeFromStartWidth=a,this.resizeTakeFromRatios=l},t.prototype.clearLocalValues=function(){this.resizeCols=void 0,this.resizeRatios=void 0,this.resizeTakeFromCols=void 0,this.resizeTakeFromRatios=void 0},t.prototype.resizeLeafColumnsToFit=function(e){var r=this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup),o=this.getInitialValues();r>o.resizeStartWidth&&this.resizeColumns(o,r,e,!0)},t.prototype.resizeColumnsFromLocalValues=function(e,r,o){var i,s,a;if(o===void 0&&(o=!0),!(!this.resizeCols||!this.resizeRatios)){var l={columnsToResize:this.resizeCols,resizeStartWidth:this.resizeStartWidth,resizeRatios:this.resizeRatios,groupAfterColumns:(i=this.resizeTakeFromCols)!==null&&i!==void 0?i:void 0,groupAfterStartWidth:(s=this.resizeTakeFromStartWidth)!==null&&s!==void 0?s:void 0,groupAfterRatios:(a=this.resizeTakeFromRatios)!==null&&a!==void 0?a:void 0};this.resizeColumns(l,e,r,o)}},t.prototype.resizeColumns=function(e,r,o,i){i===void 0&&(i=!0);var s=e.columnsToResize,a=e.resizeStartWidth,l=e.resizeRatios,u=e.groupAfterColumns,c=e.groupAfterStartWidth,p=e.groupAfterRatios,d=[];if(d.push({columns:s,ratios:l,width:r}),u){var h=r-a;d.push({columns:u,ratios:p,width:c-h})}this.columnModel.resizeColumnSets({resizeSets:d,finished:i,source:o}),i&&this.toggleColumnResizing(!1)},t.prototype.toggleColumnResizing=function(e){this.comp.addOrRemoveCssClass("ag-column-resizing",e)},t.prototype.getColumnsToResize=function(){var e=this.columnGroup.getDisplayedLeafColumns();return e.filter(function(r){return r.isResizable()})},t.prototype.getInitialSizeOfColumns=function(e){return e.reduce(function(r,o){return r+o.getActualWidth()},0)},t.prototype.getSizeRatiosOfColumns=function(e,r){return e.map(function(o){return o.getActualWidth()/r})},t.prototype.normaliseDragChange=function(e){var r=e;return this.gridOptionsService.get("enableRtl")?this.pinned!=="left"&&(r*=-1):this.pinned==="right"&&(r*=-1),r},t.prototype.destroy=function(){n.prototype.destroy.call(this),this.clearLocalValues()},wi([v("horizontalResizeService")],t.prototype,"horizontalResizeService",void 0),wi([v("autoWidthCalculator")],t.prototype,"autoWidthCalculator",void 0),wi([v("columnModel")],t.prototype,"columnModel",void 0),wi([F],t.prototype,"postConstruct",null),t}(D),Cg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Sg=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},wg=function(n){Cg(t,n);function t(e,r){var o=n.call(this)||this;return o.removeChildListenersFuncs=[],o.columnGroup=r,o.comp=e,o}return t.prototype.postConstruct=function(){this.addListenersToChildrenColumns(),this.addManagedListener(this.columnGroup,se.EVENT_DISPLAYED_CHILDREN_CHANGED,this.onDisplayedChildrenChanged.bind(this)),this.onWidthChanged(),this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this))},t.prototype.addListenersToChildrenColumns=function(){var e=this;this.removeListenersOnChildrenColumns();var r=this.onWidthChanged.bind(this);this.columnGroup.getLeafColumns().forEach(function(o){o.addEventListener("widthChanged",r),o.addEventListener("visibleChanged",r),e.removeChildListenersFuncs.push(function(){o.removeEventListener("widthChanged",r),o.removeEventListener("visibleChanged",r)})})},t.prototype.removeListenersOnChildrenColumns=function(){this.removeChildListenersFuncs.forEach(function(e){return e()}),this.removeChildListenersFuncs=[]},t.prototype.onDisplayedChildrenChanged=function(){this.addListenersToChildrenColumns(),this.onWidthChanged()},t.prototype.onWidthChanged=function(){var e=this.columnGroup.getActualWidth();this.comp.setWidth("".concat(e,"px")),this.comp.addOrRemoveCssClass("ag-hidden",e===0)},Sg([F],t.prototype,"postConstruct",null),t}(D),Eg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Ei=function(){return Ei=Object.assign||function(n){for(var t,e=1,r=arguments.length;e=0&&(i.push(s),Ee(r,s))}),r.forEach(function(s){return i.push(s)}),{columns:i,visibleState:o}},t.prototype.isSuppressMoving=function(){var e=!1;this.column.getLeafColumns().forEach(function(o){(o.getColDef().suppressMovable||o.getColDef().lockPosition)&&(e=!0)});var r=e||this.gridOptionsService.get("suppressMovableColumns");return r},t}(Si),Rg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),vu=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},gu=function(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],r=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Og=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Tg=0,Ps=function(n){Rg(t,n);function t(e,r,o){var i=n.call(this)||this;i.instanceId=Tg++,i.rowIndex=e,i.pinned=r,i.type=o;var s=o==ge.COLUMN_GROUP?"ag-header-row-column-group":o==ge.FLOATING_FILTER?"ag-header-row-column-filter":"ag-header-row-column";return i.headerRowClass="ag-header-row ".concat(s),i}return t.prototype.postConstruct=function(){this.isPrintLayout=this.gridOptionsService.isDomLayout("print"),this.isEnsureDomOrder=this.gridOptionsService.get("ensureDomOrder")},t.prototype.getInstanceId=function(){return this.instanceId},t.prototype.setComp=function(e,r){r===void 0&&(r=!0),this.comp=e,r&&(this.onRowHeightChanged(),this.onVirtualColumnsChanged()),this.setWidth(),this.addEventListeners()},t.prototype.getHeaderRowClass=function(){return this.headerRowClass},t.prototype.getAriaRowIndex=function(){return this.rowIndex+1},t.prototype.addEventListeners=function(){var e=this;this.addManagedListener(this.eventService,g.EVENT_COLUMN_RESIZED,this.onColumnResized.bind(this)),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_VIRTUAL_COLUMNS_CHANGED,function(r){return e.onVirtualColumnsChanged(r.afterScroll)}),this.addManagedListener(this.eventService,g.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,this.onRowHeightChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_GRID_STYLES_CHANGED,this.onRowHeightChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_ADVANCED_FILTER_ENABLED_CHANGED,this.onRowHeightChanged.bind(this)),this.addManagedPropertyListener("domLayout",this.onDisplayedColumnsChanged.bind(this)),this.addManagedPropertyListener("ensureDomOrder",function(r){return e.isEnsureDomOrder=r.currentValue}),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))},t.prototype.getHeaderCellCtrl=function(e){if(this.headerCellCtrls)return Zt(this.headerCellCtrls).find(function(r){return r.getColumnGroupChild()===e})},t.prototype.onDisplayedColumnsChanged=function(){this.isPrintLayout=this.gridOptionsService.isDomLayout("print"),this.onVirtualColumnsChanged(),this.setWidth(),this.onRowHeightChanged()},t.prototype.getType=function(){return this.type},t.prototype.onColumnResized=function(){this.setWidth()},t.prototype.setWidth=function(){var e=this.getWidthForRow();this.comp.setWidth("".concat(e,"px"))},t.prototype.getWidthForRow=function(){var e=this.beans.columnModel;if(this.isPrintLayout){var r=this.pinned!=null;return r?0:e.getContainerWidth("right")+e.getContainerWidth("left")+e.getContainerWidth(null)}return e.getContainerWidth(this.pinned)},t.prototype.onRowHeightChanged=function(){var e=this.getTopAndHeight(),r=e.topOffset,o=e.rowHeight;this.comp.setTop(r+"px"),this.comp.setHeight(o+"px")},t.prototype.getTopAndHeight=function(){var e=this.beans,r=e.columnModel,o=e.filterManager,i=r.getHeaderRowCount(),s=[],a=0;o.hasFloatingFilters()&&(i++,a=1);for(var l=r.getColumnGroupHeaderRowHeight(),u=r.getColumnHeaderRowHeight(),c=1+a,p=i-c,d=0;d=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Dg=function(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(e=r.return)&&e.call(r)}finally{if(s)throw s.error}}return i},Ag=function(n,t,e){if(e||arguments.length===2)for(var r=0,o=t.length,i;r=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},As=function(n){Fg(t,n);function t(e){var r=n.call(this)||this;return r.headerRowComps={},r.rowCompsList=[],r.pinned=e,r}return t.prototype.init=function(){var e=this;this.selectAndSetTemplate();var r={setDisplayed:function(i){return e.setDisplayed(i)},setCtrls:function(i){return e.setCtrls(i)},setCenterWidth:function(i){return e.eCenterContainer.style.width=i},setViewportScrollLeft:function(i){return e.getGui().scrollLeft=i},setPinnedContainerWidth:function(i){var s=e.getGui();s.style.width=i,s.style.maxWidth=i,s.style.minWidth=i}},o=this.createManagedBean(new bg(this.pinned));o.setComp(r,this.getGui())},t.prototype.selectAndSetTemplate=function(){var e=this.pinned=="left",r=this.pinned=="right",o=e?t.PINNED_LEFT_TEMPLATE:r?t.PINNED_RIGHT_TEMPLATE:t.CENTER_TEMPLATE;this.setTemplate(o),this.eRowContainer=this.eCenterContainer?this.eCenterContainer:this.getGui()},t.prototype.destroyRowComps=function(){this.setCtrls([])},t.prototype.destroyRowComp=function(e){this.destroyBean(e),this.eRowContainer.removeChild(e.getGui())},t.prototype.setCtrls=function(e){var r=this,o=this.headerRowComps;this.headerRowComps={},this.rowCompsList=[];var i,s=function(a){var l=a.getGui(),u=l.parentElement!=r.eRowContainer;u&&r.eRowContainer.appendChild(l),i&&Wn(r.eRowContainer,l,i),i=l};e.forEach(function(a){var l=a.getInstanceId(),u=o[l];delete o[l];var c=u||r.createBean(new og(a));r.headerRowComps[l]=c,r.rowCompsList.push(c),s(c)}),It(o).forEach(function(a){return r.destroyRowComp(a)})},t.PINNED_LEFT_TEMPLATE='
',t.PINNED_RIGHT_TEMPLATE='
',t.CENTER_TEMPLATE=``,Ds([L("eCenterContainer")],t.prototype,"eCenterContainer",void 0),Ds([F],t.prototype,"init",null),Ds([Se],t.prototype,"destroyRowComps",null),t}(k),Lg=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),go=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Ct;(function(n){n[n.UP=0]="UP",n[n.DOWN=1]="DOWN",n[n.LEFT=2]="LEFT",n[n.RIGHT=3]="RIGHT"})(Ct||(Ct={}));var Mg=function(n){Lg(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.currentHeaderRowWithoutSpan=-1,e}return t.prototype.postConstruct=function(){var e=this;this.ctrlsService.whenReady(function(o){e.gridBodyCon=o.gridBodyCtrl});var r=this.gridOptionsService.getDocument();this.addManagedListener(r,"mousedown",function(){return e.setCurrentHeaderRowWithoutSpan(-1)})},t.prototype.getHeaderRowCount=function(){var e=this.ctrlsService.getHeaderRowContainerCtrl();return e?e.getRowCount():0},t.prototype.navigateVertically=function(e,r,o){if(r||(r=this.focusService.getFocusedHeader()),!r)return!1;var i=r.headerRowIndex,s=r.column,a=this.getHeaderRowCount(),l=e===Ct.UP,u=l?this.headerPositionUtils.getColumnVisibleParent(s,i):this.headerPositionUtils.getColumnVisibleChild(s,i),c=u.headerRowIndex,p=u.column,d=u.headerRowIndexWithoutSpan,h=!1;return c<0&&(c=0,p=s,h=!0),c>=a?(c=-1,this.setCurrentHeaderRowWithoutSpan(-1)):d!==void 0&&(this.currentHeaderRowWithoutSpan=d),!h&&!p?!1:this.focusService.focusHeaderPosition({headerPosition:{headerRowIndex:c,column:p},allowUserOverride:!0,event:o})},t.prototype.setCurrentHeaderRowWithoutSpan=function(e){this.currentHeaderRowWithoutSpan=e},t.prototype.navigateHorizontally=function(e,r,o){r===void 0&&(r=!1);var i=this.focusService.getFocusedHeader(),s=e===Ct.LEFT,a=this.gridOptionsService.get("enableRtl"),l,u;return this.currentHeaderRowWithoutSpan!==-1?i.headerRowIndex=this.currentHeaderRowWithoutSpan:this.currentHeaderRowWithoutSpan=i.headerRowIndex,s!==a?(u="Before",l=this.headerPositionUtils.findHeader(i,u)):(u="After",l=this.headerPositionUtils.findHeader(i,u)),l||!r?this.focusService.focusHeaderPosition({headerPosition:l,direction:u,fromTab:r,allowUserOverride:!0,event:o}):this.focusNextHeaderRow(i,u,o)},t.prototype.focusNextHeaderRow=function(e,r,o){var i=e.headerRowIndex,s=null,a;if(r==="Before"?i>0&&(a=i-1,this.currentHeaderRowWithoutSpan-=1,s=this.headerPositionUtils.findColAtEdgeForHeaderRow(a,"end")):(a=i+1,this.currentHeaderRowWithoutSpan=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},xg=function(n){Ig(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.setComp=function(e,r,o){this.comp=e,this.eGui=r,this.createManagedBean(new ar(o,{onTabKeyDown:this.onTabKeyDown.bind(this),handleKeyDown:this.handleKeyDown.bind(this),onFocusOut:this.onFocusOut.bind(this)})),this.addManagedListener(this.eventService,g.EVENT_COLUMN_PIVOT_MODE_CHANGED,this.onPivotModeChanged.bind(this)),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.onPivotModeChanged(),this.setupHeaderHeight();var i=this.onHeaderContextMenu.bind(this);this.addManagedListener(this.eGui,"contextmenu",i),this.mockContextMenuForIPad(i),this.ctrlsService.registerGridHeaderCtrl(this)},t.prototype.setupHeaderHeight=function(){var e=this.setHeaderHeight.bind(this);e(),this.addManagedPropertyListener("headerHeight",e),this.addManagedPropertyListener("pivotHeaderHeight",e),this.addManagedPropertyListener("groupHeaderHeight",e),this.addManagedPropertyListener("pivotGroupHeaderHeight",e),this.addManagedPropertyListener("floatingFiltersHeight",e),this.addManagedListener(this.eventService,g.EVENT_DISPLAYED_COLUMNS_CHANGED,e),this.addManagedListener(this.eventService,g.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,e),this.addManagedListener(this.eventService,g.EVENT_GRID_STYLES_CHANGED,e),this.addManagedListener(this.eventService,g.EVENT_ADVANCED_FILTER_ENABLED_CHANGED,e)},t.prototype.getHeaderHeight=function(){return this.headerHeight},t.prototype.setHeaderHeight=function(){var e=this.columnModel,r=0,o=e.getHeaderRowCount(),i,s=this.filterManager.hasFloatingFilters();s&&(o++,r=1);var a=this.columnModel.getColumnGroupHeaderRowHeight(),l=this.columnModel.getColumnHeaderRowHeight(),u=1+r,c=o-u;if(i=r*e.getFloatingFiltersHeight(),i+=c*a,i+=l,this.headerHeight!==i){this.headerHeight=i;var p="".concat(i+1,"px");this.comp.setHeightAndMinHeight(p),this.eventService.dispatchEvent({type:g.EVENT_HEADER_HEIGHT_CHANGED})}},t.prototype.onPivotModeChanged=function(){var e=this.columnModel.isPivotMode();this.comp.addOrRemoveCssClass("ag-pivot-on",e),this.comp.addOrRemoveCssClass("ag-pivot-off",!e)},t.prototype.onDisplayedColumnsChanged=function(){var e=this.columnModel.getAllDisplayedColumns(),r=e.some(function(o){return o.isSpanHeaderHeight()});this.comp.addOrRemoveCssClass("ag-header-allow-overflow",r)},t.prototype.onTabKeyDown=function(e){var r=this.gridOptionsService.get("enableRtl"),o=e.shiftKey!==r?Ct.LEFT:Ct.RIGHT;(this.headerNavigationService.navigateHorizontally(o,!0,e)||this.focusService.focusNextGridCoreContainer(e.shiftKey))&&e.preventDefault()},t.prototype.handleKeyDown=function(e){var r=null;switch(e.key){case _.LEFT:r=Ct.LEFT;case _.RIGHT:P(r)||(r=Ct.RIGHT),this.headerNavigationService.navigateHorizontally(r,!1,e);break;case _.UP:r=Ct.UP;case _.DOWN:P(r)||(r=Ct.DOWN),this.headerNavigationService.navigateVertically(r,null,e)&&e.preventDefault();break;default:return}},t.prototype.onFocusOut=function(e){var r=this.gridOptionsService.getDocument(),o=e.relatedTarget;!o&&this.eGui.contains(r.activeElement)||this.eGui.contains(o)||this.focusService.clearFocusedHeader()},t.prototype.onHeaderContextMenu=function(e,r,o){if(!(!e&&!o||!this.menuService.isHeaderContextMenuEnabled())){var i=(e??r).target;(i===this.eGui||i===this.ctrlsService.getHeaderRowContainerCtrl().getViewport())&&this.menuService.showHeaderContextMenu(void 0,e,o)}},t.prototype.mockContextMenuForIPad=function(e){if(Dt()){var r=new me(this.eGui),o=function(i){e(void 0,i.touchStart,i.touchEvent)};this.addManagedListener(r,me.EVENT_LONG_TAP,o),this.addDestroyFunc(function(){return r.destroy()})}},Gr([v("headerNavigationService")],t.prototype,"headerNavigationService",void 0),Gr([v("focusService")],t.prototype,"focusService",void 0),Gr([v("columnModel")],t.prototype,"columnModel",void 0),Gr([v("ctrlsService")],t.prototype,"ctrlsService",void 0),Gr([v("filterManager")],t.prototype,"filterManager",void 0),Gr([v("menuService")],t.prototype,"menuService",void 0),t}(D),Ng=function(){var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(r[i]=o[i])},n(t,e)};return function(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");n(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}}(),Gg=function(n,t,e,r){var o=arguments.length,i=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,e):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,t,e,r);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(o<3?s(i):o>3?s(t,e,i):s(t,e))||i);return o>3&&i&&Object.defineProperty(t,e,i),i},Vg=function(n){Ng(t,n);function t(){return n.call(this,t.TEMPLATE)||this}return t.prototype.postConstruct=function(){var e=this,r={addOrRemoveCssClass:function(s,a){return e.addOrRemoveCssClass(s,a)},setHeightAndMinHeight:function(s){e.getGui().style.height=s,e.getGui().style.minHeight=s}},o=this.createManagedBean(new xg);o.setComp(r,this.getGui(),this.getFocusableElement());var i=function(s){e.createManagedBean(s),e.appendChild(s)};i(new As("left")),i(new As(null)),i(new As("right"))},t.TEMPLATE='