{"version":3,"names":["LIST_LOCALIZATION","en","itemsPerPage","of","items","de","sv","nl","it","hu","da","fr","es","pl","ro","hr","cs","sl","createSchemes","newSchemes","AllColors.LIST_SCHEMES","forEach","element","schemeName","paginationActiveBackground","AllColors","toConstantCase","paginationActiveColor","paginationHoverBackground","paginationHoverColor","scheme","LIST_SCHEME_CONFIG","LIST_SCHEME_MAP","Map","Object","entries","createListMapDefinition","map","background","config","listCss","EonUiListStyle0","List","this","schemeConfig","schemeMap","listItems","localization","createPagination","paginationSize","isMobile","paginationMargin","paginationElements","numberOfPages","i","push","currentPage","h","Fragment","class","pfx","elm","active","disabled","onClick","setCurrentPage","onKeyDown","e","handleKeyDown","tabIndex","role","sortedPageSizeArray","pageSizes","split","num","parseInt","sort","a","b","totalItems","_a","length","Math","ceil","Number","pageSize","listLength","onViewportSizeChange","componentWillLoad","applyScheme","setCurrentLocalization","storeItemsInArray","verifyInitialPageSize","initialPageSize","getVisibleItems","hidePaginationWrapper","detectSlotChanges","hostElement","componentDidLoad","setCssVariables","applySchemeDelegate","setCssVariablesDelegate","setCurrentLocalizationDelegate","Array","from","getNestedChildrenOf","changePageSize","webComponentsDebug","console","log","begin","end","serverMode","showNextPage","listItem","removeAttribute","visibleListItems","slice","visibleListItem","setAttribute","reInitiateList","includes","toString","goToTop","scrolling","scrollToElement","scrollContainer","window","offset","setPageSize","pageSizeChanged","emit","blockScrolling","increasePage","pageIncreased","decreasePage","pageDecreased","page","pageChanged","deactivatePageInput","deactivateNextButton","deactivatePreviousButton","key","KeyIds","ENTER","pageNumber","paginationType","pageNumberInput","value","currentTarget","innerHTML","preventDefault","hidePagination","render","Host","loading","ref","listElement","list","paging","paging__column","paging__items__label","currentLocalization","size","name","onValueChanged","event","detail","paging__items__control","selected","label","paging__description","icon","paging__current__button","el","paging__current__input","type","id","paging__current__label","listItemCss","EonUiListItemStyle0","ListItem"],"sources":["src/components/list/constants/list-i18n.ts","src/components/list/constants/list-constants.ts","src/components/list/list.scss?tag=eon-ui-list&encapsulation=shadow","src/components/list/list.tsx","src/components/list/list-item/list-item.scss?tag=eon-ui-list-item&encapsulation=shadow","src/components/list/list-item/list-item.tsx"],"sourcesContent":["import { Localization } from \"../../../common/localizable-component\";\nimport { ListLocalization } from \"./list-types\";\n\nexport const LIST_LOCALIZATION: Localization = {\n en: {\n itemsPerPage: \"Items per page\",\n of: \"of\",\n items: \"items\"\n },\n de: {\n itemsPerPage: \"Elemente pro Seite\",\n of: \"von\",\n items: \"Elementen\"\n },\n sv: {\n itemsPerPage: \"Träffar per sida\",\n of: \"av\",\n items: \"träffar\"\n },\n nl: {\n itemsPerPage: \"Artikelen per pagina\",\n of: \"van\",\n items: \"items\"\n },\n it: {\n itemsPerPage: \"Elementi per pagina\",\n of: \"di\",\n items: \"elementi\"\n },\n hu: {\n itemsPerPage: \"Tételek oldalanként\",\n of: \"a\",\n items: \"Tételek\"\n },\n da: {\n itemsPerPage: \"Varer per side\",\n of: \"af\",\n items: \"varer\"\n },\n fr: {\n itemsPerPage: \"Éléments par page\",\n of: \"de\",\n items: \"éléments\"\n },\n es: {\n itemsPerPage: \"Artículos por página\",\n of: \"de\",\n items: \"elementos\"\n },\n pl: {\n itemsPerPage: \"Pozycje na stronie\",\n of: \"z\",\n items: \"pozycje\"\n },\n ro: {\n itemsPerPage: \"Elemente per pagină\",\n of: \"de\",\n items: \"elemente\"\n },\n hr: {\n itemsPerPage: \"stavke po stranici\",\n of: \"od\",\n items: \"stavke\"\n },\n cs: {\n itemsPerPage: \"Položky na stránku\",\n of: \"z\",\n items: \"položky\"\n },\n sl: {\n itemsPerPage: \"Elementi na stran\",\n of: \"na\",\n items: \"Elementi\"\n }\n};\n","import * as AllColors from \"../../../constants/colors\";\nimport { toConstantCase } from \"../../../utils/string-format\";\nimport { BackgroundColor } from \"../../background/constants/background-types\";\nimport { ListSchemeDefinition } from \"./list-types\";\nimport { createListMapDefinition } from \"../../../utils/scheme-helper\";\n\nfunction createSchemes() {\n let newSchemes: AllColors.ListSchemeConfiguration = {};\n\n AllColors.LIST_SCHEMES.forEach((element) => {\n newSchemes[element.schemeName] = {\n paginationActiveBackground: AllColors[`COLOR_${toConstantCase(element.schemeName)}`],\n paginationActiveColor: AllColors[`COLOR_${toConstantCase(element.schemeName)}_FONT`],\n paginationHoverBackground: AllColors[`COLOR_${toConstantCase(element.schemeName)}_25`],\n paginationHoverColor: AllColors[`COLOR_${toConstantCase(element.schemeName)}_FONT`]\n };\n if (element.scheme) {\n newSchemes[element.schemeName] = { ...newSchemes[element.schemeName], ...element.scheme };\n }\n });\n\n return newSchemes;\n}\n\nexport const LIST_SCHEME_CONFIG: AllColors.ListSchemeConfiguration = createSchemes();\n\nexport const LIST_SCHEME_MAP: Map = new Map(\n Object.entries(createListMapDefinition()).map(([background, config]) => [\n background as BackgroundColor,\n LIST_SCHEME_CONFIG[config as string]\n ])\n);\n","/**\n * THEME JSON CONFIG CSS VARS\n * The following default component scss variables can be overwritten via theme configuration per brand.\n * If you need to add new one, please make sure to set a default value.\n * JSON Definition for Component with name \"Example\": testCssVar: \"20px\"\n * Resulting CSS var: $example-test-css-var: 20px;\n */\n\n/* END THEME JSON CONFIG CSS VARS ******************************************************* */\n\n:host {\n display: block;\n}\n\n.#{$prefix}list-wrapper {\n position: relative;\n\n .#{$prefix}list {\n position: relative;\n min-height: 250px;\n display: grid;\n grid-template-columns: auto;\n grid-gap: 10px;\n opacity: 1;\n transition: opacity 0.2s ease;\n }\n\n .#{$prefix}paging {\n display: grid;\n grid-template-columns: auto auto auto;\n padding-top: 32px;\n opacity: 1;\n transition: opacity 0.2s ease;\n\n @include for-size(phone) {\n grid-template-columns: auto;\n grid-template-areas:\n \"top\"\n \"bottom\";\n gap: 24px;\n }\n\n @include for-size(desktop-or-smaller) {\n padding-top: 24px;\n }\n\n &__column {\n white-space: nowrap;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n\n eon-ui-dropdown {\n width: 100px;\n }\n\n eon-ui-input {\n width: 55px;\n }\n\n &--mobile-top {\n @include for-size(phone) {\n grid-area: top;\n }\n }\n\n &--mobile-bottom {\n @include for-size(phone) {\n grid-area: bottom;\n }\n }\n\n &--hide-mobile {\n @include for-size(phone) {\n display: none;\n }\n }\n\n &--mobile-100 {\n @include for-size(phone) {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n &--pagination {\n @include for-size(tablet) {\n grid-area: 1/3;\n }\n\n @include for-size(phone) {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n grid-area: top;\n }\n }\n\n &--pagination-text {\n @include for-size(tablet) {\n width: 100%;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n grid-area: 2/1;\n margin-top: 24px;\n }\n }\n }\n\n &__column:nth-child(1) {\n @include for-size(tablet-or-larger) {\n justify-content: flex-start;\n }\n }\n\n &__column:nth-last-child(1) {\n @include for-size(tablet-or-larger) {\n justify-content: flex-end;\n grid-area: 1/3;\n }\n }\n\n &__items__label {\n margin-right: 8px;\n }\n\n &__items__control {\n width: 73px;\n }\n\n &__current__input {\n width: 53px;\n margin-left: 18px;\n margin-right: 8px;\n\n @include for-size(phone) {\n margin-left: 43px;\n }\n }\n\n &__current__label {\n margin-right: 43px;\n }\n }\n\n .#{$prefix}pagination {\n display: flex;\n font-family: $font-family-base;\n }\n\n .#{$prefix}pagination-element {\n padding: 6px;\n margin: 0 2px;\n border-radius: 5px;\n cursor: pointer;\n display: flex;\n justify-content: center;\n width: 24px;\n\n &.#{$prefix}disabled {\n pointer-events: none;\n }\n\n &.#{$prefix}active {\n background: v(paginationActiveBackground);\n color: v(paginationActiveColor);\n }\n\n &:hover:not(.#{$prefix}disabled) {\n background: v(paginationHoverBackground);\n color: v(paginationHoverColor);\n --contentHoverColor: var(--paginationHoverColor);\n --contentColor: var(--paginationHoverColor);\n transition: none;\n }\n }\n\n .#{$prefix}paging__current-button {\n padding: 2px 6px;\n }\n\n .#{$prefix}preloading-overlay {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 99;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n }\n\n &.#{$prefix}loading {\n .#{$prefix}list {\n opacity: 0.1;\n }\n\n .#{$prefix}paging {\n opacity: 0.1;\n }\n\n .#{$prefix}preloading-overlay {\n opacity: 1;\n visibility: visible;\n }\n }\n}\n\n::slotted([slot=\"preloader\"]) {\n position: sticky;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n margin: 150px 0 150px 0;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Fragment,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\nimport { KeyIds } from \"../../constants/keys\";\nimport { LocalizableComponent, Localization, setCurrentLocalizationDelegate } from \"../../common/localizable-component\";\nimport { ListLocalization, ListSchemeDefinition, ListSchemeName } from \"./constants/list-types\";\nimport { isMobile } from \"../../utils/screen-helper\";\nimport pfx from \"../../utils/style-class-prefix-helper\";\nimport { LIST_LOCALIZATION } from \"./constants/list-i18n\";\nimport { detectSlotChanges } from \"../../utils/slot-helper\";\nimport { getNestedChildrenOf } from \"../../utils/dom-helper\";\nimport { scrollToElement } from \"../../utils/scroll-helper\";\nimport webComponentsDebug from \"../../utils/log-helper\";\nimport { applySchemeDelegate, ColorableComponent, setCssVariablesDelegate } from \"../../common/colorable-component\";\nimport { ListSchemeConfiguration } from \"../../constants/colors\";\nimport { LIST_SCHEME_CONFIG, LIST_SCHEME_MAP } from \"./constants/list-constants\";\n// import { InitLogging } from \"../../decorators/init-logging\";\n\n/**\n * @slot [unnamed] - holds any number of HTML elements.\n * @slot preloader - place desired preloader component here.\n */\n@Component({\n tag: \"eon-ui-list\",\n styleUrl: \"list.scss\",\n shadow: true\n})\nexport class List\n implements LocalizableComponent, ColorableComponent> {\n // @InitLogging() sentryTransaction;\n schemeConfig: ListSchemeConfiguration = LIST_SCHEME_CONFIG;\n schemeMap = LIST_SCHEME_MAP;\n\n @Element() hostElement: HTMLEonUiListElement;\n @State() isMobile: boolean;\n listItems: Element[] = [];\n @State() activeScheme: ListSchemeDefinition;\n @State() visibleListItems: Element[] = [];\n @State() begin: number;\n @State() end: number;\n @State() loading: boolean = false;\n @State() scrolling: boolean = false;\n @State() blockScrolling: boolean = true;\n @State() hidePagination: boolean = false;\n\n /**\n * The name of the color scheme of the component.\n * If not set, the component will try to calculate it based on the nearest enclosing background information given by inner-background attribute or eon-ui-background component.\n */\n @Prop({ reflect: true }) scheme: ListSchemeName;\n\n /**\n * Fires when the page was increased\n */\n @Event() pageIncreased: EventEmitter;\n\n /**\n * Fires when the page was decreased\n */\n @Event() pageDecreased: EventEmitter;\n\n /**\n * Fires when the page was changed\n */\n @Event() pageChanged: EventEmitter;\n\n /**\n * Fires when the page Size was changed\n */\n @Event() pageSizeChanged: EventEmitter;\n\n pageNumberInput: HTMLEonUiInputElement;\n listElement: HTMLElement;\n\n localization: Localization = LIST_LOCALIZATION;\n currentLocalization: ListLocalization;\n\n /**\n * The Items to be viewed per page\n */\n @State() pageSize: number = 5;\n\n /**\n * Comma seperated list of page sizes\n */\n @Prop() pageSizes: string = \"5,10,20,50,100\";\n\n /**\n * Initial page size\n */\n @Prop({ mutable: true }) initialPageSize: number;\n\n /**\n * represents the current page index\n */\n @Prop({ mutable: true, reflect: true }) currentPage: number = 1;\n\n /**\n * Provide to total number of items. Use this if you want to use this component with a backend api with paging.\n */\n @Prop() totalItems: number;\n\n /**\n * Disables client side paging. Use this if your paging is handled in the backend. This property disables the client side paging and always shows all child items\n */\n @Prop() serverMode: boolean = false;\n\n /**\n * Select type of pagination\n */\n @Prop() paginationType: \"dropdown\" | \"numbers\" = \"dropdown\";\n\n private get sortedPageSizeArray(): number[] {\n return this.pageSizes\n .split(\",\")\n .map((num) => parseInt(num))\n .sort((a, b) => {\n return a - b;\n });\n }\n\n private get numberOfPages(): number {\n const totalItems = this.totalItems ?? this.listItems.length;\n return Math.ceil(Number(totalItems) / this.pageSize);\n }\n\n private get listLength(): number {\n return this.totalItems ?? this.listItems.length;\n }\n\n @Listen(\"resize\", { target: \"window\" })\n onViewportSizeChange() {\n this.isMobile = isMobile();\n }\n\n componentWillLoad() {\n this.applyScheme();\n this.setCurrentLocalization();\n this.storeItemsInArray();\n this.verifyInitialPageSize();\n this.pageSize = this.initialPageSize;\n this.getVisibleItems();\n this.onViewportSizeChange();\n this.hidePaginationWrapper();\n detectSlotChanges(() => {\n this.storeItemsInArray();\n this.getVisibleItems();\n this.hidePaginationWrapper();\n }, this.hostElement);\n }\n\n componentDidLoad() {\n this.setCssVariables();\n }\n\n @Watch(\"scheme\")\n applyScheme(): void {\n applySchemeDelegate(this);\n }\n\n @Watch(\"activeScheme\")\n setCssVariables(): void {\n setCssVariablesDelegate(this);\n }\n\n setCurrentLocalization() {\n setCurrentLocalizationDelegate(this);\n }\n\n storeItemsInArray() {\n this.listItems = Array.from(\n getNestedChildrenOf(this.hostElement, \"eon-ui-list-item\") as HTMLCollectionOf\n );\n }\n\n @Watch(\"initialPageSize\")\n changePageSize() {\n this.pageSize = this.initialPageSize;\n }\n\n @Watch(\"currentPage\")\n @Watch(\"pageSize\")\n getVisibleItems() {\n if (webComponentsDebug) {\n console.log(\n \"Watch currentPage && pageSize ==> \",\n \"initialPageSize:\",\n this.initialPageSize,\n \"pageSize:\",\n this.pageSize,\n \"currentPage:\",\n this.currentPage\n );\n }\n this.begin = (this.currentPage - 1) * this.pageSize;\n this.end = this.begin + this.pageSize > this.listLength ? this.listLength : this.begin + this.pageSize;\n\n if (!this.serverMode) {\n const showNextPage = () => {\n this.listItems.forEach((listItem) => {\n listItem.removeAttribute(\"visible\");\n });\n\n this.visibleListItems = this.listItems.slice(this.begin, this.end);\n this.visibleListItems.forEach((visibleListItem) => {\n visibleListItem.setAttribute(\"visible\", \"true\");\n });\n };\n\n showNextPage();\n } else {\n this.visibleListItems = this.listItems;\n this.visibleListItems.forEach((visibleListItem) => {\n visibleListItem.setAttribute(\"visible\", \"true\");\n });\n }\n }\n\n /**\n * Method to reinitiate/reload the page, e.g. listElement.reInitiateList();\n */\n @Method()\n async reInitiateList(): Promise {\n this.currentPage = 1;\n }\n\n private verifyInitialPageSize() {\n if (!this.initialPageSize || !this.pageSizes.includes(this.initialPageSize.toString())) {\n this.initialPageSize = this.sortedPageSizeArray[0];\n }\n }\n\n private async goToTop() {\n this.scrolling = true;\n await scrollToElement(this.hostElement, {\n scrollContainer: window,\n offset: -200\n });\n this.scrolling = false;\n }\n\n private setPageSize(pageSize: number) {\n if (pageSize) {\n this.currentPage = 1; //reset current page\n this.pageSize = pageSize;\n this.pageSizeChanged.emit(pageSize);\n if (!this.blockScrolling) {\n this.goToTop();\n }\n this.blockScrolling = false;\n }\n }\n\n private increasePage() {\n if (this.currentPage != this.numberOfPages) {\n this.currentPage++;\n this.pageIncreased.emit(this.currentPage);\n this.goToTop();\n }\n }\n\n private decreasePage() {\n if (this.currentPage > 1) {\n this.currentPage--;\n this.pageDecreased.emit(this.currentPage);\n this.goToTop();\n }\n }\n\n private setCurrentPage(page: number) {\n if (page > this.numberOfPages) {\n this.currentPage = this.numberOfPages;\n } else {\n this.currentPage = page;\n }\n if (page < 1) {\n this.currentPage = 1;\n }\n this.pageChanged.emit(this.currentPage);\n this.goToTop();\n }\n\n private get deactivatePageInput() {\n return !this.listLength;\n }\n\n private get deactivateNextButton() {\n return this.currentPage === this.numberOfPages;\n }\n\n private get deactivatePreviousButton() {\n return this.currentPage === 1;\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case KeyIds.ENTER:\n const pageNumber =\n this.paginationType === \"dropdown\"\n ? Number(this.pageNumberInput.value)\n : parseInt((e.currentTarget as HTMLElement).innerHTML);\n this.setCurrentPage(pageNumber);\n e.preventDefault();\n break;\n }\n }\n\n createPagination = () => {\n const paginationSize = isMobile() ? 5 : 7;\n const paginationMargin = isMobile() ? 2 : 3;\n\n const paginationElements = [];\n // List all the pages if number of pages smaller than pagination size\n if (this.numberOfPages <= paginationSize) {\n for (let i = 1; i <= this.numberOfPages; i++) {\n paginationElements.push(i);\n }\n } else if (this.currentPage <= paginationSize - paginationMargin) {\n // ... is only on the second-to-last place\n for (let i = 1; i <= paginationSize - 2; i++) {\n paginationElements.push(i);\n }\n paginationElements.push(\"...\");\n paginationElements.push(this.numberOfPages);\n } else if (this.currentPage > this.numberOfPages - paginationSize + paginationMargin) {\n // ... is only on the second place\n paginationElements.push(1);\n paginationElements.push(\"...\");\n for (let i = this.numberOfPages - paginationSize + 3; i <= this.numberOfPages; i++) {\n paginationElements.push(i);\n }\n } else {\n // ... is on the second and second-to-last place\n paginationElements.push(1);\n paginationElements.push(\"...\");\n if (paginationSize === 7) {\n paginationElements.push(this.currentPage - 1);\n }\n paginationElements.push(this.currentPage);\n if (paginationSize === 7) {\n paginationElements.push(this.currentPage + 1);\n }\n paginationElements.push(\"...\");\n paginationElements.push(this.numberOfPages);\n }\n\n return (\n \n
\n {paginationElements.map((elm) => {\n return (\n this.setCurrentPage(elm)}\n onKeyDown={(e: KeyboardEvent) => this.handleKeyDown(e)}\n tabIndex={0}\n role=\"link\"\n >\n {elm}\n
\n );\n })}\n \n
\n );\n };\n\n @Watch(\"totalItems\")\n @Watch(\"pageSizes\")\n hidePaginationWrapper() {\n if (this.listLength <= this.sortedPageSizeArray[0]) {\n this.hidePagination = true;\n } else {\n this.hidePagination = false;\n }\n }\n\n render() {\n return (\n \n
\n
(this.listElement = element)} class={pfx({ list: true })}>\n \n
\n {!this.hidePagination && (\n
\n
\n \n {this.currentLocalization.itemsPerPage}:\n \n this.setPageSize(Number(event.detail))}\n class={pfx({ paging__items__control: true })}\n selected={`${this.initialPageSize}`}\n >\n {this.sortedPageSizeArray.map((pageSize) => {\n if (Number(pageSize) <= this.listLength) {\n return (\n \n );\n }\n })}\n \n
\n \n \n {this.begin === 0 ? \"1\" : this.begin + 1} - {this.end} {this.currentLocalization.of} {this.listLength}{\" \"}\n {this.currentLocalization.items}\n \n
\n {this.paginationType === \"dropdown\" && (\n \n this.decreasePage()}\n disabled={this.deactivatePreviousButton}\n >\n (this.pageNumberInput = el)}\n size=\"small\"\n class={pfx({ paging__current__input: true })}\n name=\"itemsVisible\"\n type=\"number\"\n onKeyDown={(e: KeyboardEvent) => this.handleKeyDown(e)}\n value={this.currentPage.toString()}\n disabled={this.deactivatePageInput}\n >\n \n {this.currentLocalization.of} {this.numberOfPages}\n \n this.increasePage()}\n disabled={this.deactivateNextButton}\n >\n
\n )}\n {this.paginationType === \"numbers\" && (\n \n this.decreasePage()}\n disabled={this.deactivatePreviousButton}\n >\n {this.createPagination()}\n this.increasePage()}\n disabled={this.deactivateNextButton}\n >\n \n )}\n \n )}\n
\n \n
\n \n
\n );\n }\n}\n","/**\n * THEME JSON CONFIG CSS VARS\n * The following default component scss variables can be overwritten via theme configuration per brand.\n * If you need to add new one, please make sure to set a default value.\n * JSON Definition for Component with name \"Example\": testCssVar: \"20px\"\n * Resulting CSS var: $example-test-css-var: 20px;\n */\n\n/* END THEME JSON CONFIG CSS VARS ******************************************************* */\n\n:host {\n display: none;\n}\n\n:host([visible=\"true\"]) {\n display: block;\n}\n","import { h, Component, Host, Element } from \"@stencil/core\";\n// import { InitLogging } from \"../../../decorators/init-logging\";\n@Component({\n tag: \"eon-ui-list-item\",\n styleUrl: \"list-item.scss\",\n shadow: true\n})\nexport class ListItem {\n // @InitLogging() sentryTransaction;\n\n @Element() hostElement: HTMLEonUiListItemElement;\n\n render() {\n return (\n \n \n \n );\n }\n}\n"],"mappings":"ujBAGO,MAAMA,EAAoD,CAC/DC,GAAI,CACFC,aAAc,iBACdC,GAAI,KACJC,MAAO,SAETC,GAAI,CACFH,aAAc,qBACdC,GAAI,MACJC,MAAO,aAETE,GAAI,CACFJ,aAAc,mBACdC,GAAI,KACJC,MAAO,WAETG,GAAI,CACFL,aAAc,uBACdC,GAAI,MACJC,MAAO,SAETI,GAAI,CACFN,aAAc,sBACdC,GAAI,KACJC,MAAO,YAETK,GAAI,CACFP,aAAc,sBACdC,GAAI,IACJC,MAAO,WAETM,GAAI,CACFR,aAAc,iBACdC,GAAI,KACJC,MAAO,SAETO,GAAI,CACFT,aAAc,oBACdC,GAAI,KACJC,MAAO,YAETQ,GAAI,CACFV,aAAc,uBACdC,GAAI,KACJC,MAAO,aAETS,GAAI,CACFX,aAAc,qBACdC,GAAI,IACJC,MAAO,WAETU,GAAI,CACFZ,aAAc,sBACdC,GAAI,KACJC,MAAO,YAETW,GAAI,CACFb,aAAc,qBACdC,GAAI,KACJC,MAAO,UAETY,GAAI,CACFd,aAAc,qBACdC,GAAI,IACJC,MAAO,WAETa,GAAI,CACFf,aAAc,oBACdC,GAAI,KACJC,MAAO,aClEX,SAASc,IACP,IAAIC,EAAsE,GAE1EC,EAAuBC,SAASC,IAC9BH,EAAWG,EAAQC,YAAc,CAC/BC,2BAA4BC,EAAU,SAASC,EAAeJ,EAAQC,eACtEI,sBAAuBF,EAAU,SAASC,EAAeJ,EAAQC,oBACjEK,0BAA2BH,EAAU,SAASC,EAAeJ,EAAQC,kBACrEM,qBAAsBJ,EAAU,SAASC,EAAeJ,EAAQC,qBAElE,GAAID,EAAQQ,OAAQ,CAClBX,EAAWG,EAAQC,YAAc,IAAKJ,EAAWG,EAAQC,eAAgBD,EAAQQ,O,KAIrF,OAAOX,CACT,CAEO,MAAMY,EAA8Eb,IAEpF,MAAMc,EAA0E,IAAIC,IACzFC,OAAOC,QAAQC,KAA2BC,KAAI,EAAEC,EAAYC,KAAY,CACtED,EACAP,EAAmBQ,OC7BvB,MAAMC,EAAU,yklDAChB,MAAAC,EAAeD,E,MCqCFE,EAAI,M,6MAGfC,KAAAC,aAA8Db,EAC9DY,KAAAE,UAAYb,EAIZW,KAAAG,UAAuB,GAuCvBH,KAAAI,aAA+C/C,EAyO/C2C,KAAAK,iBAAmB,KACjB,MAAMC,EAAiBC,IAAa,EAAI,EACxC,MAAMC,EAAmBD,IAAa,EAAI,EAE1C,MAAME,EAAqB,GAE3B,GAAIT,KAAKU,eAAiBJ,EAAgB,CACxC,IAAK,IAAIK,EAAI,EAAGA,GAAKX,KAAKU,cAAeC,IAAK,CAC5CF,EAAmBG,KAAKD,E,OAErB,GAAIX,KAAKa,aAAeP,EAAiBE,EAAkB,CAEhE,IAAK,IAAIG,EAAI,EAAGA,GAAKL,EAAiB,EAAGK,IAAK,CAC5CF,EAAmBG,KAAKD,E,CAE1BF,EAAmBG,KAAK,OACxBH,EAAmBG,KAAKZ,KAAKU,c,MACxB,GAAIV,KAAKa,YAAcb,KAAKU,cAAgBJ,EAAiBE,EAAkB,CAEpFC,EAAmBG,KAAK,GACxBH,EAAmBG,KAAK,OACxB,IAAK,IAAID,EAAIX,KAAKU,cAAgBJ,EAAiB,EAAGK,GAAKX,KAAKU,cAAeC,IAAK,CAClFF,EAAmBG,KAAKD,E,MAErB,CAELF,EAAmBG,KAAK,GACxBH,EAAmBG,KAAK,OACxB,GAAIN,IAAmB,EAAG,CACxBG,EAAmBG,KAAKZ,KAAKa,YAAc,E,CAE7CJ,EAAmBG,KAAKZ,KAAKa,aAC7B,GAAIP,IAAmB,EAAG,CACxBG,EAAmBG,KAAKZ,KAAKa,YAAc,E,CAE7CJ,EAAmBG,KAAK,OACxBH,EAAmBG,KAAKZ,KAAKU,c,CAG/B,OACEI,EAACC,EAAQ,KACPD,EAAA,OAAKE,MAAOC,EAAI,eACbR,EAAmBf,KAAKwB,GAErBJ,EAAA,OACEE,MAAOC,EAAI,CACT,qBAAsB,KACtBE,OAAQnB,KAAKa,cAAgBK,EAC7BE,SAAUF,IAAQ,QAEpBG,QAAS,IAAMrB,KAAKsB,eAAeJ,GACnCK,UAAYC,GAAqBxB,KAAKyB,cAAcD,GACpDE,SAAU,EACVC,KAAK,QAEJT,MAKA,E,0EA1UwB,G,qDAGX,M,eACE,M,oBACK,K,oBACA,M,oCAqCP,E,eAKA,iB,gDAUkC,E,0CAUhC,M,oBAKmB,U,CAEjD,uBAAYU,GACV,OAAO5B,KAAK6B,UACTC,MAAM,KACNpC,KAAKqC,GAAQC,SAASD,KACtBE,MAAK,CAACC,EAAGC,IACDD,EAAIC,G,CAIjB,iBAAYzB,G,MACV,MAAM0B,GAAaC,EAAArC,KAAKoC,cAAU,MAAAC,SAAA,EAAAA,EAAIrC,KAAKG,UAAUmC,OACrD,OAAOC,KAAKC,KAAKC,OAAOL,GAAcpC,KAAK0C,S,CAG7C,cAAYC,G,MACV,OAAON,EAAArC,KAAKoC,cAAU,MAAAC,SAAA,EAAAA,EAAIrC,KAAKG,UAAUmC,M,CAI3C,oBAAAM,GACE5C,KAAKO,SAAWA,G,CAGlB,iBAAAsC,GACE7C,KAAK8C,cACL9C,KAAK+C,yBACL/C,KAAKgD,oBACLhD,KAAKiD,wBACLjD,KAAK0C,SAAW1C,KAAKkD,gBACrBlD,KAAKmD,kBACLnD,KAAK4C,uBACL5C,KAAKoD,wBACLC,GAAkB,KAChBrD,KAAKgD,oBACLhD,KAAKmD,kBACLnD,KAAKoD,uBAAuB,GAC3BpD,KAAKsD,Y,CAGV,gBAAAC,GACEvD,KAAKwD,iB,CAIP,WAAAV,GACEW,EAAoBzD,K,CAItB,eAAAwD,GACEE,EAAwB1D,K,CAG1B,sBAAA+C,GACEY,EAA+B3D,K,CAGjC,iBAAAgD,GACEhD,KAAKG,UAAYyD,MAAMC,KACrBC,EAAoB9D,KAAKsD,YAAa,oB,CAK1C,cAAAS,GACE/D,KAAK0C,SAAW1C,KAAKkD,e,CAKvB,eAAAC,GACE,GAAIa,EAAoB,CACtBC,QAAQC,IACN,qCACA,mBACAlE,KAAKkD,gBACL,YACAlD,KAAK0C,SACL,eACA1C,KAAKa,Y,CAGTb,KAAKmE,OAASnE,KAAKa,YAAc,GAAKb,KAAK0C,SAC3C1C,KAAKoE,IAAMpE,KAAKmE,MAAQnE,KAAK0C,SAAW1C,KAAK2C,WAAa3C,KAAK2C,WAAa3C,KAAKmE,MAAQnE,KAAK0C,SAE9F,IAAK1C,KAAKqE,WAAY,CACpB,MAAMC,EAAe,KACnBtE,KAAKG,UAAUzB,SAAS6F,IACtBA,EAASC,gBAAgB,UAAU,IAGrCxE,KAAKyE,iBAAmBzE,KAAKG,UAAUuE,MAAM1E,KAAKmE,MAAOnE,KAAKoE,KAC9DpE,KAAKyE,iBAAiB/F,SAASiG,IAC7BA,EAAgBC,aAAa,UAAW,OAAO,GAC/C,EAGJN,G,KACK,CACLtE,KAAKyE,iBAAmBzE,KAAKG,UAC7BH,KAAKyE,iBAAiB/F,SAASiG,IAC7BA,EAAgBC,aAAa,UAAW,OAAO,G,EASrD,oBAAMC,GACJ7E,KAAKa,YAAc,C,CAGb,qBAAAoC,GACN,IAAKjD,KAAKkD,kBAAoBlD,KAAK6B,UAAUiD,SAAS9E,KAAKkD,gBAAgB6B,YAAa,CACtF/E,KAAKkD,gBAAkBlD,KAAK4B,oBAAoB,E,EAI5C,aAAMoD,GACZhF,KAAKiF,UAAY,WACXC,EAAgBlF,KAAKsD,YAAa,CACtC6B,gBAAiBC,OACjBC,QAAS,MAEXrF,KAAKiF,UAAY,K,CAGX,WAAAK,CAAY5C,GAClB,GAAIA,EAAU,CACZ1C,KAAKa,YAAc,EACnBb,KAAK0C,SAAWA,EAChB1C,KAAKuF,gBAAgBC,KAAK9C,GAC1B,IAAK1C,KAAKyF,eAAgB,CACxBzF,KAAKgF,S,CAEPhF,KAAKyF,eAAiB,K,EAIlB,YAAAC,GACN,GAAI1F,KAAKa,aAAeb,KAAKU,cAAe,CAC1CV,KAAKa,cACLb,KAAK2F,cAAcH,KAAKxF,KAAKa,aAC7Bb,KAAKgF,S,EAID,YAAAY,GACN,GAAI5F,KAAKa,YAAc,EAAG,CACxBb,KAAKa,cACLb,KAAK6F,cAAcL,KAAKxF,KAAKa,aAC7Bb,KAAKgF,S,EAID,cAAA1D,CAAewE,GACrB,GAAIA,EAAO9F,KAAKU,cAAe,CAC7BV,KAAKa,YAAcb,KAAKU,a,KACnB,CACLV,KAAKa,YAAciF,C,CAErB,GAAIA,EAAO,EAAG,CACZ9F,KAAKa,YAAc,C,CAErBb,KAAK+F,YAAYP,KAAKxF,KAAKa,aAC3Bb,KAAKgF,S,CAGP,uBAAYgB,GACV,OAAQhG,KAAK2C,U,CAGf,wBAAYsD,GACV,OAAOjG,KAAKa,cAAgBb,KAAKU,a,CAGnC,4BAAYwF,GACV,OAAOlG,KAAKa,cAAgB,C,CAGtB,aAAAY,CAAcD,GACpB,OAAQA,EAAE2E,KACR,KAAKC,EAAOC,MACV,MAAMC,EACJtG,KAAKuG,iBAAmB,WACpB9D,OAAOzC,KAAKwG,gBAAgBC,OAC5BzE,SAAUR,EAAEkF,cAA8BC,WAChD3G,KAAKsB,eAAegF,GACpB9E,EAAEoF,iBACF,M,CAsEN,qBAAAxD,GACE,GAAIpD,KAAK2C,YAAc3C,KAAK4B,oBAAoB,GAAI,CAClD5B,KAAK6G,eAAiB,I,KACjB,CACL7G,KAAK6G,eAAiB,K,EAI1B,MAAAC,GACE,OACEhG,EAACiG,EAAI,CAAAZ,IAAA,4CACHrF,EAAA,OAAAqF,IAAA,2CAAKnF,MAAOC,EAAI,CAAE,eAAgB,KAAM+F,QAAShH,KAAKgH,SAAWhH,KAAKiF,aACpEnE,EAAA,OAAAqF,IAAA,2CAAKc,IAAMtI,GAAaqB,KAAKkH,YAAcvI,EAAUqC,MAAOC,EAAI,CAAEkG,KAAM,QACtErG,EAAA,QAAAqF,IAAA,+CAEAnG,KAAK6G,gBACL/F,EAAA,OAAKE,MAAOC,EAAI,CAAEmG,OAAQ,KAAM,CAAC,mBAAmBpH,KAAKuG,kBAAmBvG,KAAKuG,kBAC/EzF,EAAA,OAAKE,MAAOC,EAAI,CAAEoG,eAAgB,QAChCvG,EAAA,4BAAwB,OAAOE,MAAOC,EAAI,CAAEqG,qBAAsB,QAC/DtH,KAAKuH,oBAAoBhK,aAAY,KAExCuD,EAAA,mBACE0G,KAAK,QACLC,KAAK,eACLC,eAAiBC,GAAU3H,KAAKsF,YAAY7C,OAAOkF,EAAMC,SACzD5G,MAAOC,EAAI,CAAE4G,uBAAwB,OACrCC,SAAU,GAAG9H,KAAKkD,mBAEjBlD,KAAK4B,oBAAoBlC,KAAKgD,IAC7B,GAAID,OAAOC,IAAa1C,KAAK2C,WAAY,CACvC,OACE7B,EAAA,0BAAwB2F,MAAO,GAAG/D,IAAYqF,MAAO,GAAGrF,K,OAMlE5B,EAAA,OACEE,MAAOC,EAAI,CACToG,eAAgB,KAChB,kCAAmC,QAGrCvG,EAAA,4BACcd,KAAKO,SAAW,aAAe,OAC3CS,MAAOC,EAAI,CAAE+G,oBAAqB,QAEjChI,KAAKmE,QAAU,EAAI,IAAMnE,KAAKmE,MAAQ,EAAC,MAAKnE,KAAKoE,IAAG,IAAGpE,KAAKuH,oBAAoB/J,GAAE,IAAGwC,KAAK2C,WAAY,IACtG3C,KAAKuH,oBAAoB9J,QAG7BuC,KAAKuG,iBAAmB,YACvBzF,EAAA,OACEE,MAAOC,EAAI,CACToG,eAAgB,KAChB,6BAA8B,KAC9B,6BAA8B,QAGhCvG,EAAA,iBACE0G,KAAK,QACLS,KAAK,qBACLjH,MAAOC,EAAI,CAAEiH,wBAAyB,OACtC7G,QAAS,IAAMrB,KAAK4F,eACpBxE,SAAUpB,KAAKkG,2BAEjBpF,EAAA,gBACEmG,IAAMkB,GAAQnI,KAAKwG,gBAAkB2B,EACrCX,KAAK,QACLxG,MAAOC,EAAI,CAAEmH,uBAAwB,OACrCX,KAAK,eACLY,KAAK,SACL9G,UAAYC,GAAqBxB,KAAKyB,cAAcD,GACpDiF,MAAOzG,KAAKa,YAAYkE,WACxB3D,SAAUpB,KAAKgG,sBAEjBlF,EAAA,4BAAwB,OAAOwH,GAAG,GAAGtH,MAAOC,EAAI,CAAEsH,uBAAwB,QACvEvI,KAAKuH,oBAAoB/J,GAAE,IAAGwC,KAAKU,eAEtCI,EAAA,iBACE0G,KAAK,QACLS,KAAK,sBACLjH,MAAOC,EAAI,CAAEiH,wBAAyB,OACtC7G,QAAS,IAAMrB,KAAK0F,eACpBtE,SAAUpB,KAAKiG,wBAIpBjG,KAAKuG,iBAAmB,WACvBzF,EAAA,OACEE,MAAOC,EAAI,CACToG,eAAgB,KAChB,6BAA8B,QAGhCvG,EAAA,eACEmH,KAAK,qBACLjH,MAAOC,EAAI,CACT,yBAA0B,KAC1B,qBAAsB,KACtBG,SAAUpB,KAAKkG,2BAEjB7E,QAAS,IAAMrB,KAAK4F,eACpBxE,SAAUpB,KAAKkG,2BAEhBlG,KAAKK,mBACNS,EAAA,eACEmH,KAAK,sBACLjH,MAAOC,EAAI,CACT,yBAA0B,KAC1B,qBAAsB,KACtBG,SAAUpB,KAAKiG,uBAEjB5E,QAAS,IAAMrB,KAAK0F,eACpBtE,SAAUpB,KAAKiG,yBAMzBnF,EAAA,OAAAqF,IAAA,2CAAKnF,MAAOC,EAAI,CAAE,qBAAsB,QACtCH,EAAA,QAAAqF,IAAA,2CAAMsB,KAAK,gB,6SCzfvB,MAAMe,EAAc,i78CACpB,MAAAC,EAAeD,E,MCMFE,EAAQ,M,yBAKnB,MAAA5B,GACE,OACEhG,EAACiG,EAAI,CAAAZ,IAAA,4CACHrF,EAAA,QAAAqF,IAAA,6C"}