xv-webcomponents 0.1.29 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{index-782b9733.js → index-5ee1b884.js} +43 -2
- package/dist/cjs/index-5ee1b884.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{utils-aa46f72a.js → utils-22c0eda0.js} +1 -16
- package/dist/cjs/utils-22c0eda0.js.map +1 -0
- package/dist/cjs/{xv-accordion-v2_28.cjs.entry.js → xv-accordion-v2_26.cjs.entry.js} +124 -429
- package/dist/cjs/xv-accordion-v2_26.cjs.entry.js.map +1 -0
- package/dist/cjs/xv-breadcrumbs-v2.cjs.entry.js +1 -1
- package/dist/cjs/xv-webcomponents.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +1 -3
- package/dist/collection/components/xv-checkbox/xv-checkbox.css +4 -1
- package/dist/collection/components/xv-checkbox/xv-checkbox.js +1 -1
- package/dist/collection/components/xv-checkbox/xv-checkbox.js.map +1 -1
- package/dist/collection/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.js +1 -1
- package/dist/collection/components/xv-dropdown/xv-dropdown.css +1 -1
- package/dist/collection/components/xv-dropdown/xv-dropdown.js +1 -2
- package/dist/collection/components/xv-dropdown/xv-dropdown.js.map +1 -1
- package/dist/collection/components/xv-footer/xv-footer.js +1 -1
- package/dist/collection/components/xv-header/xv-header.js +1 -1
- package/dist/collection/components/xv-link/xv-link.js +1 -1
- package/dist/collection/components/xv-modal/xv-modal.css +5 -4
- package/dist/collection/components/xv-modal/xv-modal.js +1 -1
- package/dist/collection/components/xv-modal/xv-modal.js.map +1 -1
- package/dist/collection/components/xv-notification/xv-notification.js +1 -1
- package/dist/collection/components/xv-overflow-menu/xv-overflow-menu-item/xv-overflow-menu-item.js +1 -1
- package/dist/collection/components/xv-overflow-menu/xv-overflow-menu.js +1 -1
- package/dist/collection/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.js +1 -1
- package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.js +2 -2
- package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.js.map +1 -1
- package/dist/collection/components/xv-table/_vars.js +9 -0
- package/dist/collection/components/xv-table/_vars.js.map +1 -0
- package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.css +86 -0
- package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.js +160 -0
- package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.js.map +1 -0
- package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.css +55 -114
- package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.js +28 -151
- package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.js.map +1 -1
- package/dist/collection/components/xv-table/xv-table-row/xv-table-row.css +22 -36
- package/dist/collection/components/xv-table/xv-table-row/xv-table-row.js +146 -118
- package/dist/collection/components/xv-table/xv-table-row/xv-table-row.js.map +1 -1
- package/dist/collection/components/xv-table/xv-table.css +83 -141
- package/dist/collection/components/xv-table/xv-table.js +56 -208
- package/dist/collection/components/xv-table/xv-table.js.map +1 -1
- package/dist/collection/components/xv-tabs/xv-tab/xv-tab.js +3 -3
- package/dist/collection/components/xv-tabs/xv-tab/xv-tab.js.map +1 -1
- package/dist/collection/components/xv-tabs/xv-tabs.css +5 -3
- package/dist/collection/components/xv-tabs/xv-tabs.js +8 -36
- package/dist/collection/components/xv-tabs/xv-tabs.js.map +1 -1
- package/dist/collection/components/xv-tag/xv-tag.js +1 -1
- package/dist/collection/components/xv-text-input/xv-text-input.js +10 -10
- package/dist/collection/components/xv-text-input/xv-text-input.js.map +1 -1
- package/dist/collection/components/xv-tooltip/xv-tooltip.js +1 -1
- package/dist/esm/{index-83ab73b7.js → index-590eb7d2.js} +43 -3
- package/dist/esm/index-590eb7d2.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{utils-0d1c18d5.js → utils-a9c71376.js} +2 -16
- package/dist/esm/utils-a9c71376.js.map +1 -0
- package/dist/esm/{xv-accordion-v2_28.entry.js → xv-accordion-v2_26.entry.js} +124 -427
- package/dist/esm/xv-accordion-v2_26.entry.js.map +1 -0
- package/dist/esm/xv-breadcrumbs-v2.entry.js +1 -1
- package/dist/esm/xv-webcomponents.js +3 -3
- package/dist/types/components/xv-table/_vars.d.ts +15 -0
- package/dist/types/components/xv-table/xv-table-cell/xv-table-cell.d.ts +15 -0
- package/dist/types/components/xv-table/xv-table-expand/xv-table-expand.d.ts +4 -20
- package/dist/types/components/xv-table/xv-table-row/xv-table-row.d.ts +15 -46
- package/dist/types/components/xv-table/xv-table.d.ts +9 -32
- package/dist/types/components/xv-tabs/xv-tabs.d.ts +1 -10
- package/dist/types/components.d.ts +57 -273
- package/dist/xv-webcomponents/index.esm.js +1 -1
- package/dist/xv-webcomponents/p-612356e6.js +3 -0
- package/dist/xv-webcomponents/p-612356e6.js.map +1 -0
- package/dist/xv-webcomponents/p-c09a0bfe.entry.js +2 -0
- package/dist/xv-webcomponents/p-e750290d.entry.js +2 -0
- package/dist/xv-webcomponents/p-e750290d.entry.js.map +1 -0
- package/dist/xv-webcomponents/p-f98a1845.js +2 -0
- package/dist/xv-webcomponents/p-f98a1845.js.map +1 -0
- package/dist/xv-webcomponents/xv-webcomponents.esm.js +1 -1
- package/dist/xv-webcomponents/xv-webcomponents.esm.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/index-782b9733.js.map +0 -1
- package/dist/cjs/utils-aa46f72a.js.map +0 -1
- package/dist/cjs/xv-accordion-v2_28.cjs.entry.js.map +0 -1
- package/dist/collection/components/xv-table/defs.js +0 -28
- package/dist/collection/components/xv-table/defs.js.map +0 -1
- package/dist/collection/components/xv-table/xv-table-col/xv-table-col.css +0 -13
- package/dist/collection/components/xv-table/xv-table-col/xv-table-col.js +0 -111
- package/dist/collection/components/xv-table/xv-table-col/xv-table-col.js.map +0 -1
- package/dist/collection/components/xv-table/xv-table-header-row/xv-table-header-row.css +0 -80
- package/dist/collection/components/xv-table/xv-table-header-row/xv-table-header-row.js +0 -172
- package/dist/collection/components/xv-table/xv-table-header-row/xv-table-header-row.js.map +0 -1
- package/dist/collection/components/xv-table/xv-table-toolbar/xv-table-toolbar.css +0 -47
- package/dist/collection/components/xv-table/xv-table-toolbar/xv-table-toolbar.js +0 -78
- package/dist/collection/components/xv-table/xv-table-toolbar/xv-table-toolbar.js.map +0 -1
- package/dist/esm/index-83ab73b7.js.map +0 -1
- package/dist/esm/utils-0d1c18d5.js.map +0 -1
- package/dist/esm/xv-accordion-v2_28.entry.js.map +0 -1
- package/dist/types/components/xv-table/defs.d.ts +0 -38
- package/dist/types/components/xv-table/xv-table-col/xv-table-col.d.ts +0 -9
- package/dist/types/components/xv-table/xv-table-header-row/xv-table-header-row.d.ts +0 -28
- package/dist/types/components/xv-table/xv-table-toolbar/xv-table-toolbar.d.ts +0 -6
- package/dist/xv-webcomponents/p-39bf1511.js +0 -2
- package/dist/xv-webcomponents/p-39bf1511.js.map +0 -1
- package/dist/xv-webcomponents/p-5f18d718.entry.js +0 -2
- package/dist/xv-webcomponents/p-840929c5.js +0 -3
- package/dist/xv-webcomponents/p-840929c5.js.map +0 -1
- package/dist/xv-webcomponents/p-cc83f7ea.entry.js +0 -2
- package/dist/xv-webcomponents/p-cc83f7ea.entry.js.map +0 -1
- /package/dist/xv-webcomponents/{p-5f18d718.entry.js.map → p-c09a0bfe.entry.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["xvAccordionCss","XvAccordionV2Style0","XvAccordion","constructor","hostRef","this","multiple","xvId","uidGenerator","opened","Set","toggleItem","value","has","delete","clear","add","accordionChange","emit","id","componentWillLoad","render","h","Host","key","class","xvAccordionItemCss","XvAccordionV2ItemStyle0","XvAccordionItem","disabled","isOpen","handleAccordionChange","event","parentAccordionId","_a","el","closest","getAttribute","detail","toggle","_b","call","onClick","bind","label","xvButtonV2Css","XvButtonV2Style0","XvButton","block","type","variant","handleClick","e","buttonClick","part","name","xvCardCss","XvCardV2Style0","XvCard","media","src","alt","header","body","footer","xvCheckboxCss","XvCheckboxV2Style0","XvCheckbox","checked","indeterminate","readonly","required","partial","hasFocus","onInput","target","inputEvent","onChange","changeEvent","onFocus","focusEvent","onBlur","blurEvent","internals","attachInternals","connectedCallback","setFormValue","onCheckedChange","newValue","ref","inputEl","error","componentDidLoad","componentDidUpdate","formResetCallback","formStateRestoreCallback","state","SIZE_VAR","DropdownItemSelector","xvDropdownCss","XvDropdownV2Style0","XvDropdown","size","MD","selected","selectedMap","Map","setSelected","optionNodes","values","Array","from","options","querySelectorAll","length","map","v","text","handleOpen","open","handleClickOutside","ev","contains","addListeners","document","addEventListener","removeListeners","removeEventListener","setDefaultValues","defaultValue","setTimeout","forEach","option","dropdownItemData","innerText","setAttr","set","openChangeHandle","handleItemSelected","hasItem","optionElements","changeSelection","role","tabindex","join","placeholder","xmlns","viewBox","fill","d","warning","focusable","preserveAspectRatio","width","height","helper","disconnectedCallback","xvDropdownItemCss","XvDropdownV2ItemStyle0","XvDropdownItem","itemSelected","xvFooterCss","XvFooterStyle0","Xvfooter","htmlContent","response","fetch","console","innerHTML","xvHeaderCss","XvHeaderStyle0","XvHeader","parser","DOMParser","doc","parseFromString","mixedMenu","querySelector","allCategoriesGenerals","allCategoriesContainer","appendChild","href","loading","style","display","action","method","autocomplete","xvLinkCss","XvLinkV2Style0","XvLink","preventLinkHandler","preventDefault","stopPropagation","xvLoaderCss","XvLoaderV2Style0","XvLoader","show","spinner","xvModalCss","XvModalV2Style0","XvModal","permanent","triggerEl","onBackdropClick","async","currentTarget","closeModal","removeTriggerListener","openModal","setupTrigger","slot","shadowRoot","assigned","assignedElements","changeOpen","onSlotchange","backdrop","title","NOTIFICATION_VARIANTS","xvNotificationCss","XvNotificationV2Style0","XvNotification","INFO","dismissible","closeHandle","close","renderIcon","cls","ERROR","SUCCESS","WARNING","xvOverflowMenuCss","XvOverflowMenuV2Style0","XvOverflowMenu","position","handleClose","handleSelectItem","onOpenToggle","selectItem","handleKeyDown","btn","list","OverflowMenuVariant","xvOverflowMenuItemCss","XvOverflowMenuV2ItemStyle0","XvOverflowMenuItem","DEFAULT","itemClick","PROGRESS_VARIANTS","PROGRESS_ITEM_STATUS","xvProgressIndicatorCss","XvProgressIndicatorV2Style0","XvProgressIndicator","progress","updateChildItems","items","children","itemsCount","childElementCount","progressPerItem","item","index","itemProgressStart","status","localProgress","Math","min","max","DONE","IN_PROGRESS","NO_STARTED","setAttribute","line","xvProgressIndicatorItemCss","XvProgressIndicatorV2ItemStyle0","XvProgressIndicatorItem","xvTabCss","XvTabV2Style0","XvTab","xvTableCss","XvTableV2Style0","XvTable","selectedCount","handleSelectRow","expandable","setColsSizeTemplate","colsSize","setProperty","batchVisible","Fragment","XV_SORT_DIR","XV_EXPANDABLE_KEY","XV_TABLE_TAG","xvTableCellCss","XvTableV2CellStyle0","XvTableCell","handleSort","sort","undefined","NONE","ASC","DESC","parentElement","cell","hasAttribute","sortChange","xvTableExpandCss","XvTableV2ExpandStyle0","XvTableExpand","handleExpand","expandableContent","xvTableRowCss","XvTableV2RowStyle0","XvTableRow","checkHandle","checkedChangeHandle","selectRow","setInitialAttrs","hover","tableEl","onEventChange","TAB_TAGS","TABS_VATIANT","xvTabsCss","XvTabsV2Style0","XvTabs","active","tabElements","collectTabs","TAB","updateTabClasses","tab","i","classList","handleTabClick","tabSelect","componentDidRender","xvTagCss","XvTagV2Style0","XvTag","color","bg","closeable","closeHandler","closeClick","background","TextInputStatus","xvTextInputCss","XvTextInputV2Style0","XvTextInput","DEF","handleInput","getControlIcon","withIcon","xvTooltipCss","XvTooltipV2Style0","XvTooltip","tooltip","message"],"sources":["src/components/xv-accordion/xv-accordion.scss?tag=xv-accordion-v2&encapsulation=shadow","src/components/xv-accordion/xv-accordion.tsx","src/components/xv-accordion-item/xv-accordion-item.scss?tag=xv-accordion-v2-item&encapsulation=shadow","src/components/xv-accordion-item/xv-accordion-item.tsx","src/components/xv-button/xv-button-v2.scss?tag=xv-button-v2&encapsulation=shadow","src/components/xv-button/xv-button.tsx","src/components/xv-card/xv-card.scss?tag=xv-card-v2&encapsulation=shadow","src/components/xv-card/xv-card.tsx","src/components/xv-checkbox/xv-checkbox.scss?tag=xv-checkbox-v2&encapsulation=shadow","src/components/xv-checkbox/xv-checkbox.tsx","src/types/enum.ts","src/components/xv-dropdown/_vars.ts","src/components/xv-dropdown/xv-dropdown.scss?tag=xv-dropdown-v2&encapsulation=shadow","src/components/xv-dropdown/xv-dropdown.tsx","src/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.scss?tag=xv-dropdown-v2-item&encapsulation=shadow","src/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.tsx","src/components/xv-footer/xv-footer.scss?tag=xv-footer","src/components/xv-footer/xv-footer.tsx","src/components/xv-header/xv-header.scss?tag=xv-header","src/components/xv-header/xv-header.tsx","src/components/xv-link/xv-link.scss?tag=xv-link-v2&encapsulation=shadow","src/components/xv-link/xv-link.tsx","src/components/xv-loader/xv-loader.scss?tag=xv-loader-v2&encapsulation=shadow","src/components/xv-loader/xv-loader.tsx","src/components/xv-modal/xv-modal.scss?tag=xv-modal-v2&encapsulation=shadow","src/components/xv-modal/xv-modal.tsx","src/components/xv-notification/_vars.ts","src/components/xv-notification/xv-notification.scss?tag=xv-notification-v2&encapsulation=shadow","src/components/xv-notification/xv-notification.tsx","src/components/xv-overflow-menu/xv-overflow-menu.scss?tag=xv-overflow-menu-v2&encapsulation=shadow","src/components/xv-overflow-menu/xv-overflow-menu.tsx","src/components/xv-overflow-menu/_vars.ts","src/components/xv-overflow-menu/xv-overflow-menu-item/xv-overflow-menu-item.scss?tag=xv-overflow-menu-v2-item&encapsulation=shadow","src/components/xv-overflow-menu/xv-overflow-menu-item/xv-overflow-menu-item.tsx","src/components/xv-progress-indicator/_vars.ts","src/components/xv-progress-indicator/xv-progress-indicator.scss?tag=xv-progress-indicator-v2&encapsulation=shadow","src/components/xv-progress-indicator/xv-progress-indicator.tsx","src/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.scss?tag=xv-progress-indicator-v2-item&encapsulation=shadow","src/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.tsx","src/components/xv-tabs/xv-tab/xv-tab.scss?tag=xv-tab-v2&encapsulation=shadow","src/components/xv-tabs/xv-tab/xv-tab.tsx","src/components/xv-table/xv-table.scss?tag=xv-table-v2&encapsulation=shadow","src/components/xv-table/xv-table.tsx","src/components/xv-table/_vars.ts","src/components/xv-table/xv-table-cell/xv-table-cell.scss?tag=xv-table-v2-cell&encapsulation=shadow","src/components/xv-table/xv-table-cell/xv-table-cell.tsx","src/components/xv-table/xv-table-expand/xv-table-expand.scss?tag=xv-table-v2-expand&encapsulation=shadow","src/components/xv-table/xv-table-expand/xv-table-expand.tsx","src/components/xv-table/xv-table-row/xv-table-row.scss?tag=xv-table-v2-row&encapsulation=shadow","src/components/xv-table/xv-table-row/xv-table-row.tsx","src/components/xv-tabs/_vars.ts","src/components/xv-tabs/xv-tabs.scss?tag=xv-tabs-v2&encapsulation=shadow","src/components/xv-tabs/xv-tabs.tsx","src/components/xv-tag/xv-tag.scss?tag=xv-tag-v2&encapsulation=shadow","src/components/xv-tag/xv-tag.tsx","src/components/xv-text-input/_vars.ts","src/components/xv-text-input/xv-text-input.scss?tag=xv-text-input-v2&encapsulation=shadow","src/components/xv-text-input/xv-text-input.tsx","src/components/xv-tooltip/xv-tooltip.scss?tag=xv-tooltip-v2&encapsulation=shadow","src/components/xv-tooltip/xv-tooltip.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, h, Event, EventEmitter, Method, State, Prop } from '@stencil/core';\nimport { uidGenerator } from '../../utils/utils';\n\n@Component({\n tag: 'xv-accordion-v2',\n styleUrl: 'xv-accordion.scss',\n shadow: true,\n})\nexport class XvAccordion {\n @Prop() multiple: boolean = false;\n @Prop() xvId: string = uidGenerator();\n @Prop({ mutable: true }) value: string;\n @State() opened: Set<string> = new Set();\n @Event() accordionChange: EventEmitter<{ opened: Set<string>, id: string }>;\n\n @Method()\n async toggleItem(value: string) {\n if (this.opened.has(value)) {\n this.opened.delete(value);\n } else {\n if (!this.multiple) this.opened.clear();\n this.value = value;\n this.opened.add(this.value);\n }\n\n this.accordionChange.emit({ opened: this.opened, id: this.xvId });\n\n return { opened: this.opened, id: this.xvId };\n }\n\n componentWillLoad() {\n if (this.value) {\n return this.toggleItem(this.value);\n }\n }\n\n render() {\n return (\n <Host class=\"xv-accordion\" data-id={this.xvId}>\n <slot />\n </Host>\n );\n }\n}\n",":host {\n border-top: 1px solid var(--border-subtle-01);\n display: flex;\n flex-direction: column;\n font-family: var(--ff-body, inherit);\n}\n\n:host(.disabled) {\n .label {\n color: var(--text-disabled);\n &:hover {\n cursor: initial;\n background-color: transparent;\n }\n }\n}\n\n.label {\n padding: 14px 16px;\n display: inline-flex;\n align-items: center;\n column-gap: 20px;\n justify-content: space-between;\n text-align: left;\n color: var(--text-primary);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0.16px;\n background-color: transparent;\n transition: background-color 200ms ease-in-out;\n &>span {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n }\n\n &:hover {\n cursor: pointer;\n background-color: var(--layer-hover-01);\n }\n\n &:after {\n content: '';\n border: solid black;\n border-width: 0 2px 2px 0;\n display: inline-block;\n padding: 4.66px;\n transition: transform 100ms ease-in-out;\n transform: rotate(45deg);\n }\n\n &.opened:after {\n transform: rotate(-135deg);\n }\n}\n\n.content {\n padding: 0 16px;\n text-align: left;\n color: var(--text-primary);\n font-size: 14px;\n overflow: hidden;\n max-height: 0;\n transition: max-height 300ms ease-in-out, padding 250ms ease 50ms;\n &.opened {\n padding: 14px 16px;\n max-height: 500px;\n }\n}\n","import { Component, Host, h, Element, Prop, State, Listen, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xv-accordion-v2-item',\n styleUrl: 'xv-accordion-item.scss',\n shadow: true,\n})\nexport class XvAccordionItem {\n @Element() el: HTMLElement;\n @Prop() disabled: boolean = false;\n @Prop() label: string;\n @Prop() value: string;\n @State() isOpen: boolean = false;\n @Event() itemToggle: EventEmitter;\n\n @Listen('accordionChange', { target: 'body' })\n handleAccordionChange(event: CustomEvent<{ opened: Set<string>, id: string }>) {\n const parentAccordionId = this.el.closest('[data-id]')?.getAttribute('data-id');\n if (event.detail.id !== parentAccordionId) return;\n this.isOpen = event.detail.opened.has(this.value);\n }\n\n toggle() {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n this.el.closest('xv-accordion-v2')?.toggleItem?.(this.value);\n }\n\n render() {\n return (\n <Host class={`${this.disabled ? 'disabled' : ''}`}>\n <label class={`label ${this.isOpen ? 'opened' : 'closed'}`} onClick={this.toggle.bind(this)}>\n <span>{this.label}</span>\n </label>\n <div class={`content ${this.isOpen ? 'opened' : 'closed'}`}>\n <slot />\n </div>\n </Host>\n );\n }\n}\n",":host {\n --button-font-size: 14px;\n --focus-border-width: 2px;\n --focus-border-style: solid;\n --button-ghost: tarnsparent;\n --text-disabled-opacity: 0.25;\n --button-border-radius: 3px;\n --button-border-width: 1px;\n --button-border-style: solid;\n --button-border-color-accent: #97BF0D;\n --button-border-color-primary: #273435;\n --button-border-color-secondary: #D1D1D1;\n --button-border-color-ghost: tarnsparent;\n --button-ghost-hover: tarnsparent;\n --button-ghost-active: rgba(139, 139, 139, 0.5);\n --button-accent-disabled: #D1D1D1;\n --button-primary-disabled: #D1D1D1;\n --button-secondary-disabled: #D1D1D1;\n --button-tertiary-disabled: tarnsparent;\n --button-ghost-disabled: tarnsparent;\n\n button {\n font-family: inherit;\n font-size: var(--button-font-size, 14px);\n font-weight: 700;\n padding: 0 20px;\n min-height: 40px;\n line-height: 40px;\n cursor: pointer;\n box-sizing: border-box;\n transition:\n background-color 0.2s ease-in-out,\n filter 0.2s ease-in-out,\n transform 0.1s ease-in-out,\n border-color 0.2s ease-in-out,\n border-width 0.2s ease-in-out,\n box-shadow 0.2s ease-in-out;\n\n &.xv-button-block {\n width: 100%;\n }\n }\n}\n\n.xv-button {\n /* ✅ Accent Button */\n &.accent {\n background-color: var(--button-accent);\n color: var(--text-on-color);\n border: var(--button-border-width) var(--button-border-style) var(--button-border-color-accent);\n border-radius: var(--button-border-radius);\n &:hover {\n background-color: var(--button-accent-hover);\n }\n &:active {\n background-color: var(--button-accent-active);\n color: var(--text-on-color);\n }\n &:focus {\n outline: none;\n border: var(--focus-border-width) var(--focus-border-style) var(--focus);\n transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n }\n &:disabled {\n background-color: var(--button-accent-disabled);\n color: var(--text-on-color-disabled);\n border: var(--button-border-width) var(--button-border-style) var(--button-accent-disabled);\n }\n\n }\n\n /* ✅ Primary Button */\n &.primary {\n background-color: var(--button-primary);\n color: var(--text-on-color);\n border: var(--button-border-width) var(--button-border-style) var(--button-border-color-primary);\n border-radius: var(--button-border-radius);\n &:hover {\n background-color: var(--button-primary-hover)\n }\n &:active {\n background-color: var(--button-primary-active)\n }\n &:focus {\n outline: none;\n border: var(--focus-border-width) var(--focus-border-style) var(--focus);\n transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n }\n &:disabled {\n background-color: var(--button-primary-disabled);\n color: var(--text-on-color-disabled);\n border: var(--button-border-width) var(--button-border-style) var(--button-primary-disabled);\n }\n }\n\n /* ✅ Secondary Button */\n &.secondary {\n background-color: var(--button-secondary);\n color: var(--text-primary);\n border: var(--button-border-width) var(--button-border-style) var(--button-border-color-secondary);\n border-radius: var(--button-border-radius);\n &:hover {\n background-color: var(--button-secondary-hover);\n }\n &:active {\n background-color: var(--button-secondary-active);\n }\n &:focus {\n outline: none;\n border: var(--focus-border-width) var(--focus-border-style) var(--focus);\n transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n }\n &:disabled {\n background-color: var(--button-secondary-disabled);\n color: var(--text-on-color-disabled);\n }\n }\n\n /* ✅ Tertiary Button */\n &.tertiary {\n background-color: var(--button-ghost);\n color: var(--text-primary);\n border: var(--button-border-width) var(--button-border-style) var(--button-tertiary);\n border-radius: var(--button-border-radius);\n &:hover {\n background-color: var(--button-tertiary-hover);\n }\n &:active {\n background-color: var(--button-tertiary-active);\n }\n &:focus {\n outline: none;\n border: var(--focus-border-width) var(--focus-border-style) var(--focus);\n transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n }\n &:disabled {\n background-color: var(--button-tertiary-disabled);\n color: var(--text-disabled);\n opacity: var(--text-disabled-opacity);\n }\n }\n\n /* ✅ Ghost Button */\n &.ghost {\n background-color: var(--button-ghost);\n color: var(--text-primary);\n border: var(--button-border-width) var(--button-border-style) var(--button-border-color-ghost);\n border-radius: var(--button-border-radius);\n &:hover {\n background-color: var(--button-ghost-hover);\n }\n &:active {\n background-color: var(--button-ghost-active);\n }\n &:focus {\n outline: none;\n border: var(--focus-border-width) var(--focus-border-style) var(--focus);\n transition: border-color 0.2s ease-in-out;\n }\n &:disabled {\n background-color: var(--button-ghost-disabled);\n color: var(--text-disabled);\n opacity: var(--text-disabled-opacity);\n }\n }\n}\n","import { Component, Prop, Event, EventEmitter, h } from '@stencil/core';\r\n\r\n\r\n@Component({\r\n tag: 'xv-button-v2',\r\n styleUrl: 'xv-button-v2.scss',\r\n shadow: true,\r\n})\r\nexport class XvButton {\r\n /** Button label */\r\n @Prop() label: string = '';\r\n\r\n /** Container width Button */\r\n @Prop() block: boolean = false;\r\n\r\n /** Button type */\r\n @Prop() type: 'button' | 'reset' | 'submit' = 'button';\r\n\r\n /** Variant */\r\n @Prop() variant: 'accent' | 'primary' | 'secondary' | 'tertiary' | 'ghost' = 'primary';\r\n\r\n /** Disabled state */\r\n @Prop() disabled: boolean = false;\r\n\r\n /** Emits when the button is clicked */\r\n @Event() buttonClick!: EventEmitter<MouseEvent>;\r\n\r\n /** Handle click only if not disabled */\r\n private handleClick = (e: MouseEvent) => {\r\n if (this.disabled) return;\r\n this.buttonClick.emit(e);\r\n };\r\n\r\n render() {\r\n return (\r\n <button\r\n type={this.type}\r\n part=\"button\"\r\n class={`xv-button ${this.variant} ${this.block ? 'xv-button-block' : ''}`}\r\n disabled={this.disabled}\r\n onClick={this.handleClick}\r\n >\r\n <slot name=\"icon-left\"></slot>\r\n\r\n <slot>\r\n {this.label}\r\n </slot>\r\n\r\n <slot name=\"icon-right\"></slot>\r\n </button>\r\n );\r\n }\r\n}\r\n",":host {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n border: 1px solid var(--border-subtle-00);\n background: var(--layer-layer-02);\n box-shadow: 0 1px 3px 1px rgba(39, 52, 53, 0.15), 0 1px 2px 0 rgba(39, 52, 53, 0.30);\n font-family: var(--ff-body, inherit);\n overflow: visible !important;\n}\n\n:host(.xv-card_vertical) {\n //max-width: 298px;\n // TODO: wright down correct styling for card size\n width: 100%!important;\n}\n\n:host(.xv-card_horizontal) {\n flex-direction: row;\n display: flex;\n width: max-content;\n\n .xv-card_media {\n &__content, ::slotted([slot=\"media\"]) {\n min-height: 100%;\n max-height: 100%;\n max-width: 160px;\n min-width: 160px;\n }\n }\n}\n\n.xv-card {\n &_content {\n padding: 16px;\n display: flex;\n flex-direction: column;\n flex: 1;\n text-align: left;\n }\n\n &_media {\n &__content, ::slotted([slot=\"media\"]) {\n max-width: 100%;\n min-width: 100%;\n min-height: 199px;\n max-height: 199px;\n object-fit: cover;\n object-position: center;\n }\n }\n\n &_header {\n &__content, ::slotted([slot=\"header\"]) {\n margin: 0 0 8px;\n color: var(--text-primary);\n font-size: 16px;\n font-style: normal;\n font-weight: 700;\n line-height: 24px;\n letter-spacing: -0.6px;\n }\n }\n\n &_body {\n flex: 1;\n &__content, ::slotted([slot=\"body\"]) {\n margin: 0 0 8px;\n color: var(--text-secondary);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: -0.1px;\n }\n }\n\n &_footer {}\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xv-card-v2',\n styleUrl: 'xv-card.scss',\n shadow: true,\n})\nexport class XvCard {\n @Prop() variant: 'horizontal' | 'vertical' = 'vertical';\n @Prop() media: string;\n @Prop() header: string;\n @Prop() body: string;\n @Prop() footer: string;\n render() {\n return (\n <Host class={`xv-card xv-card_${this.variant}`} part={this.variant}>\n <div class=\"xv-card_media\">\n <slot name=\"media\">\n {this.media && <img class=\"xv-card_media__content\" src={this.media} alt={this.header} />}\n </slot>\n </div>\n\n <div class=\"xv-card_content\">\n <div class=\"xv-card_header\">\n <slot name=\"header\">\n {this.header && <p class=\"xv-card_header__content\">{this.header}</p>}\n </slot>\n </div>\n <div class=\"xv-card_body\">\n <slot name=\"body\">\n {this.body && <p class=\"xv-card_body__content\">{this.header}</p>}\n </slot>\n </div>\n <div class=\"xv-card_footer\">\n <slot name=\"footer\">{this.footer}</slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n","\n:host {\n --checkbox-size: max(1rem, 16px);\n box-sizing: border-box;\n display: inline-flex;\n flex-direction: column;\n}\n\n:host([error]) {\n .xv-checkbox .checkmark {\n border-color: var(--text-error, #D62512);\n }\n}\n\n.error,\n[name=\"info\"] {\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n font-size: var(--fz-sm, 12px);\n font-family: var(--ff-body, Tahoma);\n line-height: 133.333%;\n letter-spacing: 0.32px;\n}\n\n.error {\n margin-top: var(--gap-xs, 5px);\n color: var(--text-error, #D62512);\n &::before {\n margin-right: var(--gap-xs, 5px);\n content: \"!\";\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n font-size: var(--fz-sm, 12px);\n font-weight: bold;\n color: white;\n background-color: var(--text-error, #D62512);\n border-radius: 50%;\n }\n}\n\n.xv-checkbox {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n\n input[type='checkbox'] {\n position: absolute;\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n margin: 0;\n padding: 0;\n opacity: 0;\n pointer-events: none;\n box-sizing: border-box;\n }\n\n .checkmark {\n width: var(--checkbox-size);\n min-width: var(--checkbox-size);\n height: var(--checkbox-size);\n min-height: var(--checkbox-size);\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 1.4px solid var(--icon-primary, #D1D1D1);\n border-radius: 2px;\n background-color: var(--background, #FFF);\n transition: all 0.2s ease;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n input:checked + .checkmark {\n background-color: var(--background-brand, #97BF0D);\n border-color: var(--background-brand, #97BF0D);\n &:not(.checkmark-partial)::after {\n content: '';\n width: calc(var(--checkbox-size) / 4);\n height: calc(var(--checkbox-size) / 2.5);\n border: solid var(--background, #FFF);\n margin-bottom: calc(var(--checkbox-size) / 10);\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n display: block;\n }\n &.checkmark-partial::after {\n content: '';\n width: calc(var(--checkbox-size) / 3);\n height: calc(var(--checkbox-size) / 10);\n background-color: var(--background, #FFF);\n }\n }\n\n input:focus + .checkmark {\n outline: 1.4px solid var(--focus, #8B8B8B);\n }\n\n .label {\n color: var(--text-primary, #333);\n font-family: var(--ff-body, Tahoma);\n font-size: var(--fz-md, 14px);\n line-height: 128.571%;\n letter-spacing: 0.16px;\n &_str,\n ::slotted(*) {\n margin-left: 8px;\n }\n }\n\n &.readonly {\n cursor: initial;\n\n input:checked + .checkmark {\n background-color: var(--background, #FFF);\n border: 1.4px solid var(--icon-disabled, #D1D1D1);\n &:after {\n border-color: var(--icon-primary, #131313);\n }\n\n &-partial:after {\n background-color: var(--icon-primary, #131313);\n }\n }\n\n .checkmark {\n border: 1.4px solid var(--icon-disabled, #D1D1D1);\n }\n\n .label {\n color: var(--text-primary, #333);\n }\n }\n\n &.disabled {\n cursor: not-allowed;\n .checkmark {\n border: 1.4px solid var(--icon-disabled, #D1D1D1);\n }\n\n .label {\n color: var(--text-disabled, rgba(19, 19, 19, 0.25));\n }\n }\n}\n","import { Component, h, Element, Prop, State, Event, EventEmitter, Watch, Host } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\n\n@Component({\n tag: 'xv-checkbox-v2',\n styleUrl: 'xv-checkbox.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class XvCheckbox {\n private inputEl: HTMLInputElement;\n private internals: ElementInternals;\n\n @Element() el!: HTMLElement;\n\n /**\n * Default checked status\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false;\n /**\n * Using for forms\n */\n @Prop({ reflect: true }) indeterminate: boolean = false;\n /**\n * Disabled status\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n /**\n * Input name\n */\n @Prop({ reflect: true }) name: string;\n /**\n * Input value\n */\n @Prop({ reflect: true }) value: string = 'on';\n /**\n * Input readonly\n */\n @Prop({ reflect: true }) readonly: boolean = false;\n /**\n * The same like default checkbox prop\n */\n @Prop({ reflect: true }) required: boolean = false;\n /**\n * Change checkmark icon to minus\n */\n @Prop({ reflect: true }) partial: boolean = false;\n /**\n * Can be used like property or like slot\n */\n @Prop() label: string;\n\n @Prop({ reflect: true }) size?: SIZE_VAR;\n @Prop({ reflect: true }) error?: string | boolean;\n\n @State() hasFocus: boolean = false;\n /**\n * event 'onEventChange'\n */\n @Event({ eventName: 'eventChange' }) changeEvent: EventEmitter<boolean>;\n /**\n * event 'onEventInput'\n */\n @Event({ eventName: 'eventInput' }) inputEvent: EventEmitter<boolean>;\n /**\n * event 'onEventFocus'\n */\n @Event({ eventName: 'eventFocus' }) focusEvent: EventEmitter<void>;\n /**\n * event 'onEventBlur'\n */\n @Event({ eventName: 'eventBlur' }) blurEvent: EventEmitter<void>;\n\n constructor() {\n this.internals = (this.el as any).attachInternals?.() || {};\n }\n\n connectedCallback() {\n if (this.internals?.setFormValue) {\n this.internals.setFormValue(this.checked ? this.value : null);\n }\n }\n\n @Watch('checked')\n onCheckedChange(newValue: boolean) {\n if (this.internals?.setFormValue) {\n this.internals.setFormValue(newValue ? this.value : null);\n }\n }\n\n private onInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.checked = target.checked;\n this.inputEvent.emit(this.checked);\n };\n\n private onChange = (e: Event) => {\n if (this.disabled || this.readonly) return;\n const target = e.target as HTMLInputElement;\n this.checked = target.checked;\n this.changeEvent.emit(this.checked);\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.focusEvent.emit();\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n this.blurEvent.emit();\n };\n\n render() {\n return (\n <Host>\n <label class={{ 'xv-checkbox': true, disabled: this.disabled, readonly: this.readonly }}>\n <input\n ref={el => (this.inputEl = el)}\n type=\"checkbox\"\n readonly={this.readonly}\n name={this.name}\n value={this.value}\n checked={this.checked}\n disabled={this.disabled || this.readonly}\n required={this.required}\n indeterminate={this.indeterminate}\n onInput={this.onInput}\n onChange={this.onChange}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n />\n <span class={`checkmark ${this.partial ? 'checkmark-partial' : ''}`} />\n <div class=\"label\">\n <slot>{this.label && <span class=\"label_str\">{this.label}</span>}</slot>\n </div>\n </label>\n <slot name=\"info\" />\n {!!this.error && <span class=\"error\">{this.error}</span>}\n </Host>\n );\n }\n\n componentDidLoad() {\n if (this.indeterminate) {\n this.inputEl.indeterminate = true;\n }\n }\n\n componentDidUpdate() {\n if (this.inputEl) {\n this.inputEl.indeterminate = this.indeterminate;\n }\n }\n\n formResetCallback() {\n this.checked = false;\n }\n\n formStateRestoreCallback(state: string) {\n this.checked = state === this.value;\n }\n}\n","export enum SIZE_VAR {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n}\n","export interface DropdownItemData {\n value: string | number;\n text: string;\n selected: boolean;\n}\n\nexport const DropdownItemSelector = '.xv-dropdown-item';\n",":host {\n --dropdown-padding-x: 16px;\n --dropdown-padding-y: 11px;\n --dropdown-max-width: 300px;\n\n display: block;\n position: relative;\n text-align: left;\n max-width: min(var(--dropdown-max-width), 100%);\n\n .label {\n color: var(--text-secondary, #515151);\n font-family: var(--ff-body, Tahoma);\n font-size: 12px;\n font-style: normal;\n font-weight: 700;\n line-height: 16px;\n letter-spacing: 0.32px;\n ::slotted([slot=\"label\"]) {\n color: var(--text-secondary, #515151);\n font-family: var(--ff-body, Tahoma);\n font-size: 12px;\n font-style: normal;\n font-weight: 700;\n line-height: 16px;\n letter-spacing: 0.32px;\n }\n }\n\n .control {\n background-blend-mode: multiply;\n border-radius: 3px;\n box-shadow: 0 0 0 1px #8B8B8B inset;\n transition: 0.2s ease-in-out background-color;\n cursor: pointer;\n margin: 0;\n box-sizing: border-box;\n font-family: inherit;\n font-size: 100%;\n padding: 0;\n border: 0;\n appearance: none;\n background-color: var(--field-02, #FFF);\n text-align: start;\n inline-size: 100%;\n position: relative;\n display: inline-flex;\n overflow: hidden;\n align-items: center;\n block-size: calc(100% + 1px);\n outline: none;\n padding-block: var(--dropdown-padding-y);\n padding-inline: var(--dropdown-padding-x);\n text-overflow: ellipsis;\n vertical-align: top;\n white-space: nowrap;\n\n &_value, &_placeholder {\n flex: 1;\n margin: 0;\n overflow: hidden;\n color: var(--text-primary, #333);\n user-select: none;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-family: var(--fz-body, Tahoma);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 18px;\n letter-spacing: 0.16px;\n padding-inline: 0 1rem;\n }\n\n &_placeholder {\n color: var(--text-placeholder, #ACACAC);\n }\n\n &_icon {\n width: 18px;\n height: 18px;\n &.error {\n color: var(--support-error, #F1290E);\n }\n\n &.warning {\n color: var(--support-warning, #FF7F04)\n }\n }\n\n &_arrow {\n box-sizing: border-box;\n margin: 0;\n font-size: 100%;\n vertical-align: baseline;\n padding: 0;\n border: 0;\n appearance: none;\n background: none;\n text-align: start;\n display: flex;\n align-items: center;\n justify-content: center;\n block-size: 1.5rem;\n inline-size: 1.5rem;\n inset-inline-end: 0.75rem;\n outline: none;\n transition: transform 70ms cubic-bezier(0.2, 0, 0.38, 0.9);\n }\n\n &:hover {\n background-color: var(--field-hover-02, #E9E9E9);\n }\n\n &:active {\n background-color: var(--layer-selected-02, #E3E3E3);\n }\n }\n\n .options {\n inset-block-start: 100%;\n margin-block-start: 1px;\n display: block;\n max-block-size: 13.75rem;\n box-shadow: 0 2px 6px rgba(0, 0, 0, .3);\n position: absolute;\n z-index: 10;\n inline-size: 100%;\n inset-inline: 0;\n overflow-y: auto;\n transition: max-height 0.11s cubic-bezier(0.2, 0, 0.38, 0.9);\n border-radius: 3px;\n background-color: var(--field-02, #FFF);\n scrollbar-width: thin;\n scrollbar-color: var(--layer-accent-03) transparent;\n\n ::slotted(.xv-dropdown-item) {\n display: block;\n max-block-size: 13.75rem;\n inset-inline: 0;\n box-sizing: border-box;\n padding:\n var(--dropdown-padding-y)\n calc(var(--dropdown-padding-x) + 16px)\n var(--dropdown-padding-y)\n var(--dropdown-padding-x);\n position: relative;\n cursor: pointer;\n overflow: hidden;\n color: var(--text-secondary, #515151);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-family: var(--ff-body, Tahoma);\n font-size: var(--fz-md, 14px);\n font-style: normal;\n font-weight: 400;\n line-height: 18px;\n letter-spacing: 0.16px;\n transition: 0.2s ease-in-out background-color;\n user-select: none;\n &:after {\n content: '';\n position: absolute;\n bottom: 0;\n height: 1px;\n left: 10px;\n width: calc(100% - 20px);\n background-color: var(--border-subtle-01);\n }\n }\n\n ::slotted(.xv-dropdown-item:hover) {\n background-color: var(--layer-hover-02, #F7F7F7);\n }\n\n ::slotted(.xv-dropdown-item:active) {\n background-color: var(--layer-selected-hover-02, #DADADA);\n }\n\n ::slotted(.xv-dropdown-item[selected]) {\n background-color: var(--layer-selected-02, #E3E3E3);\n }\n\n ::slotted(.xv-dropdown-item[selected]:hover) {\n background-color: var(--layer-selected-hover-02, #DADADA);\n }\n\n ::slotted(.xv-dropdown-item[disabled]) {\n background-color: transparent;\n opacity: 0.4;\n cursor: not-allowed;\n }\n }\n\n .helper {\n color: var(--text-helper, #646464);\n font-family: var(--ff-heading, \"IBM Plex Sans\");\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0.32px;\n margin: 0;\n padding: 0;\n }\n}\n\n:host([open]) {\n .control_arrow {\n transform: rotate(180deg);\n }\n}\n\n:host([disabled]) {\n opacity: 0.4;\n cursor: not-allowed;\n .control {\n cursor: inherit;\n &:hover, &:active, &:focus-within {\n background-color: transparent;\n }\n }\n}\n\n:host([error]) {\n .control {\n box-shadow: none;\n outline: 2px solid var(--support-support-error, #F1290E);\n }\n\n .helper {\n color: var(--text-error, #D62512);\n }\n}\n\n:host([size=\"xs\"]) {\n --dropdown-padding-y: 4px;\n}\n:host([size=\"sm\"]) {\n --dropdown-padding-y: 7px;\n}\n:host([size=\"md\"]) {\n --dropdown-padding-y: 11px;\n}\n:host([size=\"lg\"]) {\n --dropdown-padding-y: 15px;\n}\n:host([size=\"xl\"]) {\n --dropdown-padding-y: 16px;\n}\n","import { Component, Host, h, Prop, State, Element, Watch, Listen, Event, EventEmitter } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\nimport { DropdownItemData, DropdownItemSelector } from './_vars';\nimport { forEach, setAttr } from '../../utils/utils';\n\n@Component({\n tag: 'xv-dropdown-v2',\n styleUrl: 'xv-dropdown.scss',\n shadow: true,\n})\nexport class XvDropdown {\n @Element() el: HTMLElement;\n @Prop() disabled?: boolean;\n @Prop() multiple?: boolean;\n @Prop() required?: boolean;\n @Prop({ reflect: true, mutable: true }) open?: boolean;\n @Prop() error?: string;\n @Prop() label?: string;\n @Prop() helper?: string;\n @Prop() warning?: string;\n @Prop() placeholder?: string;\n @Prop() size: SIZE_VAR = SIZE_VAR.MD;\n @Prop({ attribute: 'default-value'}) defaultValue?: DropdownItemData['value'];\n\n @State() selected: DropdownItemData['text'][] = [];\n @State() selectedMap: Map<DropdownItemData['value'], DropdownItemData> = new Map();\n\n @Event() changeSelection: EventEmitter<DropdownItemData[]>;\n\n @Watch('open')\n openChangeHandle() {\n if (this.disabled) return;\n\n if (this.open) {\n this.addListeners();\n } else {\n this.removeListeners();\n }\n }\n\n @Listen('itemSelected')\n handleItemSelected({ detail }: CustomEvent<DropdownItemData>) {\n const hasItem = this.selectedMap.has(detail.value);\n\n if (this.multiple) {\n if (detail.selected) {\n if (!hasItem) this.selectedMap.set(detail.value, detail);\n } else {\n if (hasItem) {\n if (this.required && this.selectedMap.size === 1) return;\n this.selectedMap.delete(detail.value);\n }\n }\n } else {\n if (detail.selected) {\n this.selectedMap.clear();\n this.selectedMap.set(detail.value, detail);\n } else {\n if (!this.required) this.selectedMap.clear();\n }\n this.open = false;\n }\n\n const optionElements = this.el.querySelectorAll(DropdownItemSelector);\n\n forEach(\n optionElements,\n (option) => setAttr(option, 'selected', this.selectedMap.has(option.getAttribute('value')))\n );\n\n this.changeSelection.emit(this.setSelected(this.selectedMap, optionElements));\n }\n\n private setSelected = (selectedMap: typeof this.selectedMap, optionNodes?: NodeListOf<Element>): DropdownItemData[] => {\n const values = Array.from(selectedMap.values());\n const options = optionNodes || this.el.querySelectorAll(DropdownItemSelector);\n\n this.selected = values.length === options.length ?\n ['Alle ausgewählt'] : values.length > 2 ?\n [`${values.length} ausgewählt`] : values.map((v) => v.text);\n\n return values;\n };\n\n private handleOpen = () => {\n if (this.disabled || this.open) return;\n this.open = true;\n };\n\n private handleClickOutside = (ev: MouseEvent) => {\n if (!this.open || this.el.contains(ev.target as Node)) return;\n\n if (this.open) this.open = false;\n }\n\n private addListeners = () => {\n document.body.addEventListener('click', this.handleClickOutside);\n }\n\n private removeListeners = () => {\n document.body.removeEventListener('click', this.handleClickOutside);\n }\n\n private setDefaultValues = () => {\n if (!this.defaultValue) return;\n\n // Needs to wait next Javascript tik\n setTimeout(() => {\n const options = this.el.querySelectorAll(DropdownItemSelector);\n\n forEach(\n options,\n (option) => {\n const dropdownItemData: DropdownItemData = {\n value: option.getAttribute('value'),\n text: (option as any).innerText,\n selected: `${this.defaultValue}` === option.getAttribute('value'),\n };\n\n if (dropdownItemData.selected) {\n setAttr(option, 'selected', dropdownItemData.selected);\n this.selectedMap.set(dropdownItemData.value, dropdownItemData);\n }\n }\n );\n\n this.setSelected(this.selectedMap, options);\n });\n };\n\n render() {\n return (\n <Host size={this.size} class=\"xv-dropdown\" role=\"combobox\" tabindex={this.disabled ? -1 : false}>\n <label class=\"label\">\n <slot name=\"label\">{this.label}</slot>\n </label>\n\n <div class=\"xv-dropdown-control control\" onClick={this.handleOpen}>\n {this.selected.length ? (\n <p class=\"control_value\">{this.selected.join(', ')}</p>\n ) : (\n <p class=\"control_placeholder\">{this.placeholder || ''}</p>\n )}\n\n {this.error && (\n <svg class=\"control_icon error\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path fill=\"currentColor\" d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\" />\n </svg>\n )}\n {(!this.error && !!this.warning) && (\n <svg class=\"control_icon warning\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path fill=\"currentColor\" d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\" />\n </svg>\n )}\n\n <svg class=\"control_arrow\" focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\" aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\n <path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path>\n </svg>\n </div>\n\n {this.open && <div class=\"options\">\n <slot key=\"xv-dropdown-options\" />\n </div>}\n\n {(this.helper || this.error || this.warning) && (\n <p class=\"helper\">{this.error || this.warning || this.helper}</p>\n )}\n </Host>\n );\n }\n\n componentWillLoad() {\n this.setDefaultValues();\n }\n\n componentDidLoad() {\n this.openChangeHandle();\n }\n\n disconnectedCallback() {\n this.removeListeners();\n }\n}\n",":host {\n display: block;\n .checkmark {\n position: absolute;\n right: 12px;\n top: var(--dropdown-padding-y, 10px);\n width: 5px;\n height: 10px;\n border: solid var(--icon-primary, #333);\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n transition: opacity 0.2s;\n }\n}\n\n\n","import { Component, Host, h, Event, EventEmitter, Listen, Prop, Element } from '@stencil/core';\nimport { DropdownItemData } from '../_vars';\n\n/**\n * xv-dropdown-item — custom dropdown list item\n * if you want to create new dropdown list item you need to extend current class properties and\n * events\n * should be created and emitted 'itemSelected' event\n */\n@Component({\n tag: 'xv-dropdown-v2-item',\n styleUrl: 'xv-dropdown-item.scss',\n shadow: true,\n})\nexport class XvDropdownItem {\n @Element() el: HTMLElement;\n @Prop() disabled: boolean = false;\n @Prop({ reflect: true, mutable: true }) value: DropdownItemData['value'] = '';\n @Prop({ reflect: true, mutable: true }) selected: DropdownItemData['selected'] = false;\n @Event() itemSelected: EventEmitter<DropdownItemData>;\n\n @Listen('click')\n handleClick() {\n if (this.disabled) return;\n\n this.itemSelected.emit({\n selected: !this.selected,\n value: this.value,\n text: this.el.innerText\n });\n }\n\n\n render() {\n return (\n <Host class=\"xv-dropdown-item\" value={this.value} role=\"option\" tabindex={this.disabled ? -1 : false}>\n <slot></slot>\n\n {this.selected && <span class=\"checkmark\" />}\n </Host>\n );\n }\n\n componentWillLoad() {\n if (!this.value) this.value = this.el.innerText;\n }\n}\n","%svg-common {\n background: url(\"https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.svg\") no-repeat;\n}\n\n.svg-assets--src--project--images--svg-sprite--facebook {\n @extend %svg-common;\n background-position: 0 100%;\n width: 32px;\n height: 32px;\n}\n\n.svg-assets--src--project--images--svg-sprite--instagram {\n @extend %svg-common;\n background-position: 14.545454545454545% 100%;\n width: 32px;\n height: 32px;\n}\n\n.svg-assets--src--project--images--svg-sprite--kauf-auf-rechnung {\n @extend %svg-common;\n background-position: 0 0;\n width: 84px;\n height: 58px;\n}\n\n.svg-assets--src--project--images--svg-sprite--linkedin {\n @extend %svg-common;\n background-position: 29.09090909090909% 100%;\n width: 32px;\n height: 32px;\n}\n\n.svg-assets--src--project--images--svg-sprite--mastercard {\n @extend %svg-common;\n background-position: 50% 0;\n width: 84px;\n height: 58px;\n}\n\n.svg-assets--src--project--images--svg-sprite--paypal {\n @extend %svg-common;\n background-position: 0 64.44444444444444%;\n width: 84px;\n height: 58px;\n}\n\n.svg-assets--src--project--images--svg-sprite--sepa {\n @extend %svg-common;\n background-position: 50% 64.44444444444444%;\n width: 84px;\n height: 58px;\n}\n\n.svg-assets--src--project--images--svg-sprite--visa {\n @extend %svg-common;\n background-position: 100% 0;\n width: 84px;\n height: 58px;\n}\n\n.svg-assets--src--project--images--svg-sprite--vorkasse {\n @extend %svg-common;\n background-position: 100% 64.44444444444444%;\n width: 84px;\n height: 58px;\n}\n\n.svg-assets--src--project--images--svg-sprite--xing {\n @extend %svg-common;\n background-position: 43.63636363636363% 100%;\n width: 32px;\n height: 32px;\n}\n\n.svg-assets--src--project--images--svg-sprite--youtube {\n @extend %svg-common;\n background-position: 58.18181818181818% 100%;\n width: 32px;\n height: 32px;\n}\n\n.sprite-icon-beachten {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -90px 0px;\n\twidth: 80px;\n\theight: 80px;\n}\n.sprite-icon-buchen {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: 0px -82px;\n\twidth: 80px;\n\theight: 80px;\n}\n.sprite-icon-direct {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -284px -99px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-downloads {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -80px -82px;\n\twidth: 80px;\n\theight: 80px;\n}\n.sprite-icon-kino {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -305px -99px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-kosten {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -170px 0px;\n\twidth: 80px;\n\theight: 80px;\n}\n.sprite-icon-kreation {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -170px -80px;\n\twidth: 80px;\n\theight: 80px;\n}\n.sprite-icon-logo-full {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: 0px -242px;\n\twidth: 189px;\n\theight: 32px;\n}\n.sprite-icon-logo-small {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -250px -99px;\n\twidth: 34px;\n\theight: 34px;\n}\n.sprite-icon-mobile {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -326px -99px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-online {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -347px -99px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-partner-agma {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -250px -66px;\n\twidth: 88px;\n\theight: 33px;\n}\n.sprite-icon-partner-bvdw {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -338px -66px;\n\twidth: 88px;\n\theight: 33px;\n}\n.sprite-icon-partner-climate {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -250px 0px;\n\twidth: 186px;\n\theight: 33px;\n}\n.sprite-icon-partner-google {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: 0px 0px;\n\twidth: 90px;\n\theight: 82px;\n}\n.sprite-icon-partner-microsoft {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -250px -33px;\n\twidth: 186px;\n\theight: 33px;\n}\n.sprite-icon-plakat {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -368px -99px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-print {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -389px -99px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-radio {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -410px -99px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-services {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -250px -133px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-topangebote {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -271px -133px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-tv {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: -292px -133px;\n\twidth: 21px;\n\theight: 21px;\n}\n.sprite-icon-werbeformen {\n\tbackground-image: url(https://crossvertise.blob.core.windows.net/assets/images/xv-sprite.png?1739974291120);\n\tbackground-position: 0px -162px;\n\twidth: 80px;\n\theight: 80px;\n}\n","import { Component, h,Element, State } from '@stencil/core';\n\n@Component({\n tag: 'xv-footer',\n styleUrl: 'xv-footer.scss',\n})\nexport class Xvfooter {\n @State() htmlContent: string = '';\n @Element() el: HTMLElement;\n\n async componentWillLoad() {\n try {\n const response = await fetch('https://crossvertise.blob.core.windows.net/nav-sync-qa/footer.html');\n const text = await response.text();\n this.htmlContent = text;\n } catch (error) {\n console.error('Failed to fetch footer HTML:', error);\n }\n }\n\n render() {\n return (\n <footer>\n <div innerHTML={this.htmlContent}></div>\n </footer>\n );\n }\n}\n","@import '../../global.scss';\n.media-nav-dropdown:hover > .dropdown-menu {\n display: block;\n}\n\n.alle-kategorien-menu li:hover > ul{\n display: block;\n}\n\n#nav-container .media-nav #media-menu-item-alle-kategorien li:hover > ul{\n display: block;\n}","import { Component, h,Element, State } from '@stencil/core';\n\n@Component({\n tag: 'xv-header',\n styleUrl: 'xv-header.scss',\n})\nexport class XvHeader {\n @State() htmlContent: string = '';\n @Element() el: HTMLElement;\n\n async componentWillLoad() {\n try {\n const response = await fetch('https://crossvertise.blob.core.windows.net/nav-sync-qa/nav.html');\n const text = await response.text();\n const parser = new DOMParser();\n const doc = parser.parseFromString(text, 'text/html');\n\n const mixedMenu = doc.querySelector('.alle-kategorien-menu');\n const allCategoriesGenerals = doc.querySelector('.alle-kategorien-allgemines');\n const allCategoriesContainer = doc.querySelector('#media-menu-item-alle-kategorien > .dropdown-menu');\n\n if (mixedMenu && allCategoriesGenerals && allCategoriesContainer) {\n allCategoriesContainer.appendChild(mixedMenu);\n allCategoriesContainer.appendChild(allCategoriesGenerals);\n }\n\n this.htmlContent = doc.body.innerHTML;\n } catch (error) {\n console.error('Failed to fetch header HTML:', error);\n }\n }\n\n render() {\n return (\n <div id=\"nav-container\" class=\"xv-header\">\n <nav class=\"navbar navbar-default navbar-fixed-top backend-force-relative\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-sm-3 col-xs-3 col-xxs-4 no-padding-right\">\n <div class=\"navbar-header\">\n <button class=\"btn btn-default navbar-toggle pull-left navbar-btn\" data-toggle=\"collapse\" data-target=\"#main-menu\">\n <i class=\"fa fa-bars fa-lg\" aria-hidden=\"true\"></i>\n </button>\n <div class=\"visible-xs-inline\">\n <a href=\"https://www.crossvertise.com/\" class=\"navbar-brand\">\n <img src=\"https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo-small.svg\" alt=\"Crossvertise\" />\n </a>\n </div>\n <div class=\"hidden-xs\">\n <a href=\"https://www.crossvertise.com/\" class=\"navbar-brand\">\n <img loading=\"lazy\" src=\"https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo.svg\" alt=\"Crossvertise\" />\n </a>\n </div>\n </div>\n </div>\n <div class=\"col-sm-9 col-xs-9 col-xxs-8 no-padding-left\">\n <ul class=\"nav nav-pills nav-meta pull-right\">\n <li>\n <a class=\"btn btn-link navbar-btn hidden-xs\" href=\"#\">\n <i class=\"fa fa-user\"></i>\n <i class=\"fa fa-exchange-alt\"></i>\n </a>\n </li>\n <li>\n <a class=\"btn btn-link navbar-btn hidden-xs\" href=\"#\">Kontakt</a>\n <a href=\"https://www.crossvertise.com/contact\" class=\"btn btn-link navbar-btn hidden-xs\" style={{ display: 'none' }}>Kontakt</a>\n <a class=\"btn btn-default btn-link navbar-btn visible-xs hidden-xxs\" href=\"#\">\n <i class=\"fa fa-phone\"></i>\n </a>\n </li>\n <li class=\"dropdown\" id=\"my-xv-menu\">\n <a href=\"#\" class=\"dropdown-toggle btn btn-default navbar-btn btn-link\" data-toggle=\"dropdown\">\n <i class=\"fa fa-user fa-lg text-success\" aria-hidden=\"true\"></i> \n <span class=\"hidden-xs\">Mein Bereich</span>\n <span class=\"caret\"></span>\n </a>\n <ul class=\"dropdown-menu-left dropdown-menu navbar-myxv\">\n <li>\n <a href=\"#\"><i class=\"fa fa-tachometer-alt fa-fw\"></i> Cockpitfunktionen <i class=\"fa fa-caret-down\"></i></a>\n </li>\n <li>\n <a href=\"#\"><i class=\"fa fa-cubes\"></i> Entitäten <i class=\"fa fa-caret-down\"></i></a>\n </li>\n <li role=\"separator\" class=\"divider\"></li>\n <li>\n <a href=\"#\"><i class=\"fa fa-user\"></i> Mein Crossvertise <span class=\"badge\">0</span><i class=\"fa fa-caret-down\"></i></a>\n </li>\n <li>\n <a href=\"https://www.crossvertise.com/de-de/mycrossvertise/account/logoff?returnUrl=https%3A%2F%2Fwww.crossvertise.com\">\n <i class=\"fa fa-sign-out-alt fa-fw\" aria-hidden=\"true\"></i> Logout\n </a>\n </li>\n </ul>\n </li>\n <li class=\"visible-sm-block visible-xs-block hidden-xxs\">\n <a class=\"btn btn-default navbar-btn btn-link\" data-toggle=\"collapse\" data-target=\"#search-collapse\">\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\n </a>\n </li>\n <li class=\"hidden-md hidden-lg\">\n <a class=\"btn btn-default navbar-btn btn-link\" href=\"https://market.crossvertise.com/de-de/mycrossvertise/account/logon?returnUrl=https%3A%2F%2Fwww.crossvertise.com%2F\">\n <i class=\"fa fa-user fa-lg\" aria-hidden=\"true\"></i>\n <span class=\"hidden-xs\">Login</span>\n </a>\n </li>\n <li class=\"hidden-xs hidden-sm\">\n <a role=\"button\" class=\"btn btn-default navbar-btn btn-link\" data-toggle=\"modal\" data-target=\"#login-modal\">\n <i class=\"fa fa-user fa-lg\" aria-hidden=\"true\"></i>\n <span>Login</span>\n </a>\n </li>\n <li class=\"hidden-xs\">\n <a class=\"btn btn-default navbar-btn btn-link\" href=\"https://market.crossvertise.com/de-de/mycrossvertise/account/register\">\n <span>Registrieren</span>\n </a>\n </li>\n <li class=\"navbar-divider hidden-xs\"></li>\n <li>\n <a class=\"btn btn-success navbar-btn\" href=\"https://market.crossvertise.com/de-de/mycrossvertise/shoppingcart/activecart\">\n <span class=\"xv-font-icon-warenkorb fa-lg fa-fw\" aria-hidden=\"true\"></span>\n <span class=\"hidden-xs hidden-sm\"> Warenkorb </span>\n <span class=\"badge badge-success\">0</span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class=\"collapse hidden-md hidden-lg\" id=\"search-collapse\">\n <div class=\"container\">\n <form action=\"https://market.crossvertise.com/de-de/media/search\" class=\"navbar-form\" method=\"get\" role=\"search\">\n <div class=\"input-group\">\n <input class=\"form-control\" name=\"Q\" placeholder=\"Suche\" type=\"text\" autocomplete=\"off\" />\n <span class=\"input-group-btn force-full-width\">\n <button class=\"btn btn-default search-addon\" type=\"submit\">\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\n </button>\n </span>\n </div>\n </form>\n </div>\n </div>\n </nav>\n <div innerHTML={this.htmlContent}></div>\n </div>\n );\n }\n}\n",":host {\n font-family: var(--ff-body, inherit);\n}\n\n:host(.xv-link_inline) {\n display: inline-block;\n .xv-link {\n text-decoration-line: underline;\n text-decoration-style: solid;\n text-decoration-skip-ink: none;\n text-decoration-thickness: auto;\n text-underline-offset: auto;\n text-underline-position: from-font;\n }\n}\n\n:host(.xv-link_standalone) {\n display: block;\n .xv-link {\n display: block;\n text-decoration-line: none;\n }\n}\n\n.xv-link {\n display: inline-flex;\n gap: 8px;\n align-items: center;\n color: var(--link-primary);\n font-family: var(--ff-body);\n font-style: normal;\n font-weight: 400;\n transition: color 200ms ease-in-out;\n\n &:active {\n color: var(--text-primary);\n }\n\n &:visited {\n color: var(--link-visted);\n }\n\n &:hover {\n color: var(--link-primary-hover);\n cursor: pointer;\n }\n\n &:disabled, &_disabled, &::part(disabled) {\n color: var(--text-disabled);\n pointer-events: none;\n cursor: initial;\n }\n\n &.sm {\n font-size: var(--fz-sm);\n line-height: 137.5%;\n }\n\n &.md {\n font-size: var(--fz-md);\n line-height: 128.571%;\n }\n\n &.lg {\n font-size: var(--fz-lg);\n line-height: 133.333%;\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xv-link-v2',\n styleUrl: 'xv-link.scss',\n shadow: true,\n})\nexport class XvLink {\n @Prop() href: string;\n @Prop() target: '_self' | '_blank' | '_parent' | '_top';\n @Prop() disabled: boolean = false;\n @Prop() size: 'sm' | 'md' | 'lg' = 'md';\n @Prop() variant: 'standalone' | 'inline' = 'inline';\n\n preventLinkHandler(e: PointerEvent) {\n if (!this.disabled) return;\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n render() {\n return (\n <Host class={`xv-link_${this.variant}`}>\n <a\n href={this.href}\n onClick={this.preventLinkHandler.bind(this)}\n class={`xv-link ${this.disabled ? 'xv-link_disabled' : ''} ${this.size}`}\n target={this.target}\n >\n <slot name=\"icon-left\"></slot>\n\n <slot></slot>\n\n <slot name=\"icon-right\"></slot>\n </a>\n </Host>\n );\n }\n}\n",":host(.xv-loader) {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n .spinner {\n color: var(--text-secondary, #515151);\n font-size: inherit;\n border: calc(max(4px, 0.1em)) solid rgba(0, 0, 0, 0.1);\n border-top-color: var(--highlight-01, #CEDE94);\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n width: 1em;\n height: 1em;\n min-width: 1em;\n min-height: 1em;\n max-width: 1em;\n max-height: 1em;\n }\n\n ::slotted(*) {\n font-family: var(--ff-heading, \"IBM Plex Sans\");\n color: inherit;\n margin-top: 0;\n margin-bottom: 0;\n font-size: inherit;\n line-height: 133.333%;\n letter-spacing: 0.32px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n:host([variant=\"vertical\"]) {\n flex-direction: column;\n}\n\n:host([size=\"xs\"]) {\n font-size: var(--fz-xs, 9px);\n}\n:host([size=\"sm\"]) {\n font-size: var(--fz-sm, 12px);\n}\n:host([size=\"md\"]) {\n font-size: inherit;\n}\n:host([size=\"lg\"]) {\n font-size: var(--spacing-08, 40px);\n}\n:host([size=\"xl\"]) {\n font-size: var(--spacing-12, 96px);\n}\n\n/* Animation */\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\n\n@Component({\n tag: 'xv-loader-v2',\n styleUrl: 'xv-loader.scss',\n shadow: true,\n})\nexport class XvLoader {\n /**\n * Is component displayed\n */\n @Prop() show: boolean = true;\n /**\n * Message direction\n */\n @Prop() variant: 'vertical' | 'horizontal' = 'horizontal';\n /**\n * Size of loader. Default size depends of font size\n */\n @Prop() size: SIZE_VAR = SIZE_VAR.MD;\n\n render() {\n if (!this.show) return null;\n\n return (\n <Host class={{ 'xv-loader': true }} size={this.size}>\n <slot name=\"before\"></slot>\n <div class={{spinner: true }}></div>\n <slot></slot>\n </Host>\n );\n }\n}\n",":host {\n display: inline-flex;\n\n .backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.3s ease;\n z-index: 1000;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .modal {\n display: flex;\n flex-direction: column;\n max-height: 60vh;\n max-width: 960px;\n position: relative;\n animation: fadeIn 0.25s ease;\n padding-block: var(--gap-md, 16px);\n background: var(--layer-02, #FFF);\n box-shadow: 0 6px 10px 4px rgba(39, 52, 53, 0.15), 0 2px 3px 0 rgba(39, 52, 53, 0.30);\n\n &_header {\n position: relative;\n padding-inline: var(--gap-md, 16px);\n &__title {\n color: var(--text-text-primary, #333);\n font-family: var(--ff-heading, \"Gill Sans\");\n font-size: var(--fz-xl, 21px);\n line-height: 133.333%;\n margin: 0 20px 0 0;\n }\n }\n\n &_content {\n padding: var(--gap-md, 16px);\n overflow: auto;\n }\n\n &_footer {\n position: relative;\n padding-inline: var(--gap-md, 16px);\n }\n\n &_close {\n z-index: +1;\n cursor: pointer;\n border: none;\n outline: none;\n font-size: 28px;\n background-color: transparent;\n position: absolute;\n right: 10px;\n top: 10px;\n transition: 350ms ease-in-out opacity;\n &:hover {\n opacity: 0.6;\n }\n &:active {\n opacity: 0.3;\n }\n }\n }\n}\n\n:host([open]) {\n .backdrop {\n opacity: 1;\n pointer-events: all;\n }\n}\n\n:host([size=\"xs\"]) {\n .modal {\n max-width: min(300px, 90vw);\n }\n}\n:host([size=\"sm\"]) {\n .modal {\n max-width: min(480px, 90vw);\n }\n}\n:host([size=\"md\"]) {\n .modal {\n max-width: min(600px, 90vw);\n }\n}\n:host([size=\"lg\"]) {\n .modal {\n max-width: min(960px, 90vw);\n }\n}\n:host([size=\"xl\"]) {\n .modal {\n max-width: min(1200px, 80vw);\n }\n}\n\n@keyframes fadeIn {\n from {\n transform: translateY(-10px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n","import { Component, Host, h, Prop, Element, Event, EventEmitter, Method } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\n\n@Component({\n tag: 'xv-modal-v2',\n styleUrl: 'xv-modal.scss',\n shadow: true,\n})\nexport class XvModal {\n @Element() el: HTMLElement;\n /**\n * Is modal opened\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = false;\n /**\n * If true then modal not be closed on backdrop click\n */\n @Prop() permanent: boolean = false;\n /**\n * Size of modal. But max size is 90% view width\n */\n @Prop() size: SIZE_VAR = SIZE_VAR.MD;\n\n @Event({ eventName: 'changeOpen' }) changeOpen!: EventEmitter<boolean>;\n\n private triggerEl: HTMLElement | null = null;\n\n @Method()\n async openModal() {\n this.open = true;\n this.changeOpen?.emit(this.open);\n return this.open\n };\n\n @Method()\n async closeModal() {\n this.open = false;\n this.changeOpen?.emit(this.open);\n return this.open\n }\n\n private onBackdropClick = async (e: MouseEvent) => {\n if (this.permanent) return;\n // click on backdrop\n if (e.target === e.currentTarget) {\n await this.closeModal();\n }\n };\n\n private removeTriggerListener = () => {\n this.triggerEl?.removeEventListener('click', this.openModal.bind(this));\n };\n\n private setupTrigger = () => {\n this.removeTriggerListener();\n const slot = this.el.shadowRoot.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement;\n\n if (slot) {\n const assigned = slot.assignedElements();\n if (assigned.length > 0) {\n this.triggerEl = assigned[0] as HTMLElement;\n this.triggerEl.addEventListener('click', this.openModal.bind(this));\n }\n }\n }\n\n render() {\n return (\n <Host role=\"dialog\" size={this.size} id={this.el.id}>\n <slot name=\"trigger\" onSlotchange={this.setupTrigger} />\n\n <div class={{ backdrop: true }} onClick={this.onBackdropClick}>\n <div class=\"modal\">\n <button class=\"modal_close\" onClick={this.closeModal.bind(this)}>×</button>\n <div class=\"modal_header\">\n <slot name=\"header\">\n {this.el?.title && <h5 class=\"modal_header__title\">{this.el.title}</h5>}\n </slot>\n </div>\n\n <div class=\"modal_content\">\n <slot />\n </div>\n\n <div class=\"modal_footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n disconnectedCallback() {\n this.removeTriggerListener();\n }\n}\n","export enum NOTIFICATION_VARIANTS {\n INFO = 'info',\n SUCCESS = 'success',\n WARNING = 'warning',\n ERROR = 'error'\n}\n",":host {\n --notification-icon-size: 20px;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: flex-start;\n border-radius: 3px;\n padding: var(--gap-md, 16px);\n column-gap: var(--gap-md, 16px);\n border: 1px solid;\n\n .content {\n flex: 1;\n text-align: left;\n color: var(--text-primary, #333);\n font-family: var(--ff-body, Tahoma);\n font-size: var(--fz-md, 14px);\n line-height: 128%;\n letter-spacing: 0.16px;\n display: flex;\n flex-direction: column;\n row-gap: var(--spacing-06, 24px);\n\n &_title {\n text-align: left;\n margin: 0;\n padding: 0;\n font-weight: 700;\n line-height: var(--notification-icon-size);\n }\n }\n\n .icon {\n width: var(--notification-icon-size);\n height: var(--notification-icon-size);\n font-size: var(--notification-icon-size);\n fill: currentColor;\n }\n\n .close {\n --notification-close-size: 16px;\n\n background-color: transparent;\n border: none;\n width: var(--notification-close-size);\n height: var(--notification-close-size);\n min-width: var(--notification-close-size);\n min-height: var(--notification-close-size);\n position: relative;\n padding: 0;\n margin: 0;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: 300ms ease-in-out opacity;\n\n &:after, &:before {\n content: '';\n position: absolute;\n top: calc(50% - (var(--notification-close-size) / 2));\n left: calc(50% - 1px);\n display: inline-block;\n width: 2px;\n height: 90%;\n background-color: var(--button-tertiary, #273435);\n }\n\n &:after {\n transform: rotate(45deg);\n }\n\n &:before {\n transform: rotate(-45deg);\n }\n\n &:hover {\n opacity: 0.7;\n }\n\n &:active {\n opacity: 0.3;\n }\n }\n\n ::slotted([slot=\"footer\"]) {\n margin: 0;\n padding: 0;\n }\n}\n\n:host([type=\"info\"]) {\n border-color: var(--support-info, #1B87B2);\n background-color: var(--support-info-background, #E2F5F8);\n .icon {\n color: var(--support-info, #1B87B2);\n }\n}\n\n:host([type=\"success\"]) {\n border-color: var(--support-success, #97BF0D);\n background-color: var(--support-success-background, #F4F7E5);\n .icon {\n color: var(--support-success, #1B87B2);\n }\n}\n\n:host([type=\"warning\"]) {\n border-color: var(--support-warning, #FF7F04);\n background-color: var(--support-warning-backround, #FFF9C2);\n .icon {\n color: var(--support-warning, #FF7F04);\n }\n}\n\n:host([type=\"error\"]) {\n border-color: var(--support-error, #F1290E);\n background-color: var(--support-error-background, #FEE9E8);\n .icon {\n color: var(--support-error, #F1290E);\n }\n}\n","import { Component, Host, h, Prop, Element, Event, EventEmitter } from '@stencil/core';\nimport { NOTIFICATION_VARIANTS } from './_vars';\n\n@Component({\n tag: 'xv-notification-v2',\n styleUrl: 'xv-notification.scss',\n shadow: true,\n assetsDirs: ['xv-notification/icons']\n})\nexport class XvNotification {\n @Element() el: HTMLElement;\n @Prop() variant: NOTIFICATION_VARIANTS = NOTIFICATION_VARIANTS.INFO;\n @Prop() dismissible: boolean = false;\n @Event() close: EventEmitter<MouseEvent>;\n\n private closeHandle = (e: MouseEvent) => this.close.emit(e);\n\n render() {\n return (\n <Host class=\"xv-notification\" type={this.variant}>\n {this.renderIcon(this.variant)}\n\n <div class=\"content\">\n <div class=\"content_wrapper\">\n {this.el.title && <h5 class=\"content_title\">{this.el.title}</h5>}\n <slot></slot>\n </div>\n <slot name=\"footer\"></slot>\n </div>\n\n {this.dismissible && <button class=\"close\" onClick={this.closeHandle} />}\n </Host>\n );\n }\n\n private renderIcon = (variant: NOTIFICATION_VARIANTS, cls: string = 'icon') => {\n switch (variant) {\n case NOTIFICATION_VARIANTS.ERROR: {\n return (\n <svg class={cls} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\" />\n </svg>\n );\n }\n case NOTIFICATION_VARIANTS.INFO: {\n return (\n <svg class={cls} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\" />\n </svg>\n );\n }\n case NOTIFICATION_VARIANTS.SUCCESS: {\n return (\n <svg class={cls} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\" />\n </svg>\n )\n }\n case NOTIFICATION_VARIANTS.WARNING: {\n return (\n <svg class={cls} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\" />\n </svg>\n );\n }\n default:\n return null;\n }\n };\n}\n","$tag: xv-overflow-menu-v2;\n\n:host {\n --overflow-menu-size: 40px;\n --overflow-menu-item-padding: 11px 16px;\n\n display: inline-flex;\n flex-direction: column;\n position: relative;\n\n .btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--overflow-menu-size);\n height: var(--overflow-menu-size);\n background-color: transparent;\n border: 1px solid transparent;\n transition: 300ms ease-in-out color, 300ms ease-in-out background-color, 200ms ease box-shadow;\n font-size: calc(var(--overflow-menu-size) / 2);\n color: var(--icon-primary);\n border-radius: 5%;\n margin: 0;\n padding: 0;\n\n &:hover {\n cursor: pointer;\n color: var(--link-primary-hover);\n background-color: var(--background-hover);\n }\n\n &:active {\n background-color: var(--background-active);\n color: var(--icon-disabled);\n }\n\n &:disabled {\n background-color: transparent;\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n .list {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-start;\n background-color: var(--layer-01);\n position: absolute;\n top: 100%;\n left: 0;\n max-height: 0;\n overflow: hidden;\n border-radius: 3px;\n transition: 200ms ease-in-out max-height, 100ms ease box-shadow;\n min-width: 128px;\n max-width: 50vw;\n width: max-content;\n\n ::slotted(#{$tag}-item) {\n padding: var(--overflow-menu-item-padding);\n }\n\n &.position-right {\n left: initial;\n right: 0;\n border-top-right-radius: 0;\n }\n\n &.position-left {\n border-top-left-radius: 0;\n }\n }\n}\n\n:host([size=\"xs\"]) {\n --overflow-menu-item-padding: 4px 16px;\n --overflow-menu-size: 24px;\n}\n:host([size=\"sm\"]) {\n --overflow-menu-size: 32px;\n --overflow-menu-item-padding: 7px 16px;\n}\n:host([size=\"md\"]) {\n --overflow-menu-size: 40px;\n --overflow-menu-item-padding: 11px 16px;\n}\n:host([size=\"lg\"]) {\n --overflow-menu-size: 48px;\n --overflow-menu-item-padding: 16px;\n}\n:host([size=\"xl\"]) {\n --overflow-menu-size: 56px;\n --overflow-menu-item-padding: 16px;\n}\n\n:host([open]) {\n .btn {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n background-color: var(--layer-01);\n box-shadow: -2px 2px 2px 0 rgba(0, 0, 0, 0.1);\n z-index: 1;\n }\n\n .list {\n max-height: 500px;\n z-index: 2;\n box-shadow: -2px 2px 2px 0 rgba(0, 0, 0, 0.1);\n }\n}\n","import { Component, Element, h, Host, Listen, Prop, Watch, Event, EventEmitter } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\nimport { OverflowMenuEvent } from './_vars';\n\n@Component({\n tag: 'xv-overflow-menu-v2',\n styleUrl: 'xv-overflow-menu.scss',\n shadow: true,\n})\nexport class XvOverflowMenu {\n @Element() el: HTMLElement;\n @Prop({ reflect: true, mutable: true }) open: boolean = false;\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop() position: 'left' | 'right' = 'left';\n @Prop() size: SIZE_VAR = SIZE_VAR.MD;\n @Event() selectItem: EventEmitter<OverflowMenuEvent>;\n\n @Listen('keydown')\n handleKeyDown(ev: KeyboardEvent) {\n if (ev.key === 'Escape'){\n ev.stopPropagation();\n ev.preventDefault();\n this.handleClose();\n }\n }\n\n @Watch('open')\n openChangeHandle() {\n if (this.disabled) return;\n\n if (this.open) {\n this.el.addEventListener('itemClick', this.handleSelectItem);\n document.body.addEventListener('click', this.handleClick);\n } else {\n this.removeListeners();\n }\n }\n\n private handleClose = () => {\n if (this.open) this.open = false;\n }\n\n private removeListeners = () => {\n this.el.removeEventListener('itemClick', this.handleSelectItem);\n document.body.removeEventListener('click', this.handleClick);\n }\n\n private handleClick = (ev: MouseEvent) => {\n if (!this.open || this.el.contains(ev.target as Node)) return;\n\n ev.stopPropagation();\n ev.preventDefault();\n this.handleClose()\n }\n\n private onOpenToggle = () => {\n this.open = !this.open;\n };\n\n private handleSelectItem = ({ detail }: CustomEvent<OverflowMenuEvent>) => {\n this.selectItem.emit(detail);\n this.handleClose();\n }\n\n render() {\n return (\n <Host\n class=\"xv-overflow-menu\"\n size={this.size}\n role=\"menu\"\n tabindex={-1}\n >\n <button class={{ btn: true, open: this.open }} onClick={this.onOpenToggle} disabled={this.disabled}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 128 512\">\n <path\n d=\"M64 368a48 48 0 1 0 0 96 48 48 0 1 0 0-96zm0-160a48 48 0 1 0 0 96 48 48 0 1 0 0-96zM112 96A48 48 0 1 0 16 96a48 48 0 1 0 96 0z\" />\n </svg>\n </button>\n <div class={{list: true, open: this.open, [`position-${this.position}`]: true }}>\n <slot></slot>\n </div>\n </Host>\n );\n }\n\n componentDidLoad() {\n this.openChangeHandle();\n }\n\n disconnectedCallback() {\n this.removeListeners();\n }\n}\n","export interface OverflowMenuEvent {\n value: string | number | object | undefined;\n event: PointerEvent;\n}\n\nexport enum OverflowMenuVariant {\n DEFAULT = '',\n DANGER = 'danger',\n}\n",":host {\n flex: 1;\n display: inline-block;\n background-color: transparent;\n transition: 200ms ease background-color;\n user-select: none;\n text-align: left;\n color: var(--text-secondary, #515151);\n font-family: var(--ff-body, Tahoma);\n font-size: var(--fz-md, 14px);\n line-height: 128.571%;\n letter-spacing: 0.16px;\n}\n:host(:hover) {\n cursor: pointer;\n background-color: var(--layer-hover-01, #E9E9E9);\n}\n:host(:active) {\n background-color: var(--layer-active-01, #D1D1D1);\n}\n:host(:focus) {\n border: 2px solid var(--focus, #273435);\n}\n\n:host([variant=\"danger\"]) {\n background-color: var(--text-error, #D62512);\n color: var(--text-on-color, #FFF);\n}\n:host([variant=\"danger\"]:hover) {\n background-color: var(--support-error, #F1290E);\n}\n:host([variant=\"danger\"]:active) {\n background-color: var(--text-error, #D62512);\n}\n\n:host([disabled]) {\n background-color: var(--layer-01, #F7F7F7) !important;\n color: var(--text-disabled) !important;\n cursor: not-allowed;\n}\n","import { Component, Host, h, Prop, Listen, Event, EventEmitter } from '@stencil/core';\nimport { OverflowMenuEvent, OverflowMenuVariant } from '../_vars';\n\n@Component({\n tag: 'xv-overflow-menu-v2-item',\n styleUrl: 'xv-overflow-menu-item.scss',\n shadow: true,\n})\nexport class XvOverflowMenuItem {\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) value: OverflowMenuEvent['value'];\n @Prop() variant: OverflowMenuVariant = OverflowMenuVariant.DEFAULT;\n @Event() itemClick: EventEmitter<OverflowMenuEvent>;\n\n @Listen('click')\n handleClick(event: PointerEvent) {\n if (this.disabled) return;\n\n this.itemClick.emit({ event, value: this.value });\n }\n\n render() {\n return (\n <Host\n class=\"xv-overflow-menu-item\"\n role=\"menuitem\"\n disabled={this.disabled}\n >\n <slot></slot>\n </Host>\n );\n }\n}\n","export enum PROGRESS_VARIANTS {\n DEFAULT = '',\n HORIZONTAL = 'horizontal'\n}\n\nexport enum PROGRESS_ITEM_STATUS {\n DONE = 'done',\n NO_STARTED = 'not_started',\n IN_PROGRESS = 'in_progress',\n}\n","$prefix: xv-progress-indicator-v2;\n\n:host {\n --progress-indicator-icon-size: 22px;\n --progress-indicator-font-size: var(--fz-md, 14px);\n\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n font-family: var(--ff-body, inherit);\n overflow-x: auto;\n}\n\n:host([variant=\"horizontal\"]) {\n ::slotted(#{$prefix}-item) {\n flex-direction: row;\n column-gap: var(--gap-xs, 8px);\n justify-content: flex-start;\n padding-left: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: left;\n }\n}\n\n:host([size=\"xs\"]) {\n --progress-indicator-icon-size: 14px;\n --progress-indicator-font-size: var(--fz-md, 14px);\n}\n:host([size=\"sm\"]) {\n --progress-indicator-icon-size: 16px;\n --progress-indicator-font-size: var(--fz-md, 14px);\n}\n:host([size=\"md\"]) {\n --progress-indicator-icon-size: 22px;\n --progress-indicator-font-size: var(--fz-md, 14px);\n}\n:host([size=\"lg\"]) {\n --progress-indicator-icon-size: 24px;\n --progress-indicator-font-size: var(--fz-lg, 18px);\n}\n:host([size=\"xl\"]) {\n --progress-indicator-icon-size: 32px;\n --progress-indicator-font-size: var(--fz-xl, 20px);\n}\n","import { Component, Host, h, Prop, Watch, Element } from '@stencil/core';\nimport { PROGRESS_ITEM_STATUS, PROGRESS_VARIANTS } from './_vars';\nimport { SIZE_VAR } from '../../types/enum';\nimport { forEach } from '../../utils/utils';\n\n@Component({\n tag: 'xv-progress-indicator-v2',\n styleUrl: 'xv-progress-indicator.scss',\n shadow: true,\n})\nexport class XvProgressIndicator {\n @Element() el: HTMLElement;\n /**\n * Current progress\n * from 0 to 100\n */\n @Prop({ reflect: true }) progress: number = 0;\n /**\n * Progress variant\n * enum PROGRESS_VARIANTS\n * possible option `horizontal`\n */\n @Prop() variant: PROGRESS_VARIANTS = PROGRESS_VARIANTS.DEFAULT;\n /**\n * Size of progress\n * enum SIZE_VAR\n * possible options `XS | SM | MD | LG | XL`\n */\n @Prop() size: SIZE_VAR = SIZE_VAR.MD;\n\n // Update 'xv-progress-indicator-item' done status\n @Watch('progress')\n updateChildItems() {\n const items = this.el.children;\n const itemsCount = this.el.childElementCount;\n const progressPerItem = 100 / itemsCount;\n\n if (!items.length || !itemsCount) return;\n\n forEach(items, (item, index) => {\n const itemProgressStart = index * progressPerItem;\n let status: PROGRESS_ITEM_STATUS;\n const localProgress = Math.min(\n Math.max((this.progress - itemProgressStart) / progressPerItem, 0), 1\n ) * 100;\n\n if (localProgress >= 100) {\n status = PROGRESS_ITEM_STATUS.DONE;\n } else if (localProgress > 0) {\n status = PROGRESS_ITEM_STATUS.IN_PROGRESS;\n } else {\n status = PROGRESS_ITEM_STATUS.NO_STARTED;\n }\n\n // Set item current status\n (item as HTMLElement).setAttribute('status', status);\n\n // Update progress line\n const line = (item as HTMLElement)?.shadowRoot?.querySelector('.line') as HTMLElement;\n if (line) line.style.width = `${localProgress}%`;\n });\n }\n\n // Load initial done status\n componentDidLoad() {\n this.updateChildItems()\n }\n\n render() {\n return (\n <Host variant={this.variant} size={this.size} class={{ 'xv-progress-indicator': true }}>\n <slot></slot>\n </Host>\n );\n }\n}\n",":host(.xv-progress-indicator-item) {\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: relative;\n padding: 10px 16px;\n row-gap: var(--gap-sm, 10px);\n &:before {\n width: 100%;\n }\n\n &:before, .line {\n content: '';\n z-index: 1;\n display: inline-block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n color: inherit;\n background-color: var(--border-subtle-01, grey);\n }\n\n .line {\n width: 0;\n color: inherit;\n transition: width 250ms ease;\n background-color: var(--background-brand, currentColor);\n }\n\n .icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--progress-indicator-icon-size, 22px);\n height: var(--progress-indicator-icon-size, 22px);\n min-width: var(--progress-indicator-icon-size, 22px);\n min-height: var(--progress-indicator-icon-size, 22px);\n max-width: var(--progress-indicator-icon-size, 22px);\n max-height: var(--progress-indicator-icon-size, 22px);\n border: 2px dashed var(--icon-primary, currentColor);\n border-radius: 50%;\n svg {\n width: calc(var(--progress-indicator-icon-size, 22px) * 0.637);\n height: calc(var(--progress-indicator-icon-size, 22px) * 0.637);\n opacity: 0;\n transition: opacity 500ms ease-in-out;\n }\n }\n\n .label {\n margin: 0;\n color: var(--text-primary);\n font-size: var(--progress-indicator-font-size, 14px);\n line-height: 1.1;\n letter-spacing: 0.16px;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n}\n\n:host([status=\"done\"]),\n:host([status=\"in_progress\"]), {\n .icon {\n border-color: var(--background-brand, currentColor);\n color: var(--background-brand, inherit);\n border-style: solid;\n svg {\n opacity: 1;\n }\n }\n\n .line {\n width: 100%;\n background-color: var(--background-brand, currentColor);\n }\n}\n\n:host([status=\"in_progress\"]) {\n .icon {\n border-color: var(--background-brand, currentColor);\n color: var(--background-brand, inherit);\n border-style: solid;\n position: relative;\n &:after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 50%;\n height: 100%;\n background-color: var(--background-brand, currentColor);\n border-top-left-radius: 50% 100%;\n border-bottom-left-radius: 50% 100%;\n }\n\n svg {\n opacity: 0;\n }\n }\n}\n","import { Component, Host, h, Element, Prop } from '@stencil/core';\nimport { PROGRESS_ITEM_STATUS } from '../_vars';\n\n@Component({\n tag: 'xv-progress-indicator-v2-item',\n styleUrl: 'xv-progress-indicator-item.scss',\n shadow: true,\n})\nexport class XvProgressIndicatorItem {\n @Element() el: HTMLElement;\n @Prop({ reflect: false }) status: PROGRESS_ITEM_STATUS = PROGRESS_ITEM_STATUS.NO_STARTED;\n\n render() {\n return (\n <Host\n status={this.status}\n class={{'xv-progress-indicator-item': true}}\n >\n <span class=\"line\"/>\n <span class=\"icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n fill=\"currentColor\"\n d=\"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"\n />\n </svg>\n </span>\n <p class=\"label\"><slot/></p>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xv-tab-v2',\n styleUrl: 'xv-tab.scss',\n shadow: true,\n})\nexport class XvTab {\n @Prop({ reflect: true }) label: string;\n @Prop({ reflect: true }) disabled: boolean = false;\n\n render() {\n return <Host disabled={this.disabled}><slot /></Host>;\n }\n}\n","$tag-name: xv-table-v2;\n\n:host {\n --xv-table-padding-x: 16px;\n --xv-table-padding-y: 15px;\n --xv-table-cols-template: repeat(auto-fit, minmax(0, 1fr));\n\n display: block;\n .batch-actions {\n user-select: none;\n pointer-events: none;\n position: absolute;\n left: 0;\n bottom: 100%;\n width: 0;\n min-height: 48px;\n overflow: hidden;\n border-radius: 3px 3px 0 0;\n background-color: var(--interactive-01, #273435);\n display: flex;\n align-items: center;\n justify-content: space-between;\n column-gap: var(--spacing-04);\n flex-wrap: nowrap;\n box-sizing: border-box;\n transition: 250ms ease-in-out height, 250ms ease-in-out width, 250ms ease-in-out padding-inline;\n\n color: var(--text-on-color, #fff);\n\n &_content {\n display: block;\n overflow: hidden;\n white-space: nowrap;\n }\n\n &_count {\n margin: 0;\n white-space: nowrap;\n font-family: var(--ff-body, Tahoma);\n font-size: var(--fz-md, 14px);\n font-style: normal;\n font-weight: 400;\n line-height: var(--fz-lg, 18px);\n letter-spacing: 0.16px;\n }\n }\n\n .xv-table {\n display: flex;\n flex-direction: column;\n position: relative;\n ::slotted([checked]) {\n background-color: var(--layer-selected-01, #E3E3E3);\n }\n ::slotted([checked]:not([header]):hover) {\n background-color: var(--layer-selected-hover-01, #DADADA);\n }\n\n ::slotted(#{$tag-name}-row[disabled]) {\n opacity: 0.4;\n cursor: not-allowed;\n user-select: none;\n }\n\n ::slotted([slot=\"footer\"]:hover),\n ::slotted([slot=\"footer\"]) {\n background-color: var(--layer-accent-02, #E3E3E3);\n }\n }\n\n .xv-table-title,\n ::slotted([slot=\"title\"]) {\n color: var(--text-primary, #333)!important;\n font-size: var(--fz-xl, 21px)!important;\n margin-top: var(--spacing-05, 16px)!important;\n margin-bottom: var(--spacing-06, 24px)!important;\n font-family: var(--ff-heading, \"Gill Sans\");\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n }\n}\n\n:host([hover]) {\n .xv-table {\n ::slotted(:hover:not([header])) {\n background-color: var(--layer-hover-01, #E9E9E9);\n }\n }\n}\n\n:host(.batchVisible) {\n .batch-actions {\n pointer-events: initial;\n user-select: initial;\n width: 100%;\n padding-inline: var(--xv-table-padding-x);\n }\n}\n\n:host([expandable]) {\n ::slotted(#{$tag-name}-row) {\n padding-inline-start: calc((max(10px, var(--xv-table-padding-x)) * 2) + 10px);\n }\n}\n\n:host([variant-checkbox]) {\n ::slotted([slot=\"footer\"]:not([variant])) {\n padding-inline-start: calc((max(10px, var(--xv-table-padding-x)) * 2) + 57.97px);\n }\n}\n\n// region Size Vars\n:host([size=\"xs\"]) {\n --xv-table-padding-y: 7px;\n}\n:host([size=\"sm\"]) {\n --xv-table-padding-y: 10px;\n}\n:host([size=\"lg\"]) {\n --xv-table-padding-y: 21px;\n}\n:host([size=\"xl\"]) {\n --xv-table-padding-y: 31px;\n}\n// endregion\n","import { Component, Host, h, Element, Prop, State, Listen, Fragment } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\nimport { SelectRowDto } from './_vars';\n\n@Component({\n tag: 'xv-table-v2',\n styleUrl: 'xv-table.scss',\n shadow: true,\n})\nexport class XvTable {\n @Element() el: HTMLElement;\n @Prop({ reflect: true }) size?: SIZE_VAR;\n @Prop({ reflect: true }) hover?: boolean;\n @Prop({ reflect: true, attribute: 'colsSize' }) colsSize?: (string | null)[];\n @State() selected: Map<string, SelectRowDto> = new Map();\n @State() selectedCount: number = 0;\n\n @Listen('selectRow')\n handleSelectRow({ detail }: CustomEvent<SelectRowDto>) {\n if (detail.header || detail.expandable) return;\n if (detail.checked) {\n this.selected.set(detail.name, detail);\n } else {\n this.selected.delete(detail.name);\n }\n\n this.selectedCount = this.selected.size;\n }\n\n private setColsSizeTemplate() {\n if (!this.colsSize || !this.colsSize?.length) return;\n\n this.el.style.setProperty(\n '--xv-table-cols-template',\n this.colsSize\n .map((v) => {\n if (!v) return 'minmax(0, 1fr)';\n if (v === 'auto') return 'minmax(0, auto)';\n return `calc(${v} - ${50 / this.colsSize.length}px)`;\n })\n .join(' ') + ' repeat(auto-fit, minmax(0, 1fr))'\n );\n }\n\n render() {\n return (\n <Host class={{ batchVisible: !!this.selectedCount }}>\n <slot name=\"title\">\n {!!this.el.title && <h2 class=\"xv-table-title\">{this.el.title}</h2>}\n </slot>\n\n <slot name=\"toolbar\" />\n\n <div class=\"xv-table\">\n <div class=\"batch-actions\">\n <Fragment>\n <div class=\"batch-actions_content\">\n <slot name=\"batch\" />\n </div>\n <p class=\"batch-actions_count\">\n {!!this.selectedCount && `${this.selectedCount} ${this.selectedCount === 1 ? 'Position ausgewählt' : 'Positionen ausgewählt'}`}\n </p>\n </Fragment>\n </div>\n\n <slot />\n\n <slot name=\"footer\" />\n </div>\n </Host>\n );\n }\n\n componentWillLoad() {\n this.setColsSizeTemplate();\n }\n}\n","export interface SelectRowDto {\n name: string;\n checked: boolean;\n value?: string | number | object;\n partial?: boolean;\n header?: boolean;\n expandable?: boolean;\n}\n\nexport enum XV_SORT_DIR {\n ASC = 'asc',\n DESC = 'desc',\n NONE = 'none'\n}\n\nexport const XV_EXPANDABLE_KEY = 'expandable';\nexport const XV_TABLE_TAG = 'xv-table-v2';\n",":host {\n // Multiline\n /*display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;*/\n\n // Single line\n white-space: nowrap;\n\n overflow: hidden;\n text-overflow: ellipsis;\n padding: var(--xv-table-padding-y) var(--xv-table-padding-x);\n color: var(--text-primary, #333);\n font-family: var(--ff-body, Tahoma);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 1.2;\n letter-spacing: 0.16px;\n transition: .25s ease-in-out background-color;\n}\n\n// region Cell Align\n:host([align=\"left\"]) {\n text-align: left;\n}\n:host([align=\"right\"]) {\n text-align: right;\n}\n:host([align=\"center\"]) {\n text-align: center;\n}\n// endregion\n\n// region Sorting styles\n:host([sort]) {\n position: relative;\n cursor: pointer;\n user-select: none;\n &:before, &:after {\n font-size: 12px;\n line-height: 10px;\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: absolute;\n right: 8px;\n pointer-events: none;\n transition: 350ms ease-in-out opacity;\n opacity: 0;\n }\n\n &:before {\n content: \"▲\";\n top: 50%;\n transform: translateY(calc(-50% - 5px));\n }\n\n &::after {\n content: \"▼\";\n top: 50%;\n transform: translateY(calc(-50% + 5px));\n }\n}\n:host([sort]:hover) {\n background-color: var(--layer-accent-hover-01, #E3E3E3);\n &::before, &::after {\n opacity: 1;\n }\n}\n:host([sort=\"asc\"]) {\n background-color: var(--layer-accent-active-01, #D1D1D1);\n &::before {\n opacity: 1;\n }\n\n &::after {\n display: none;\n }\n}\n:host([sort=\"desc\"]) {\n background-color: var(--layer-accent-active-01, #D1D1D1);\n &::before {\n display: none;\n }\n\n &::after {\n opacity: 1;\n }\n}\n// endregion\n","import { Component, Host, h, Element, Prop, Event, EventEmitter, Listen } from '@stencil/core';\nimport { XV_SORT_DIR } from '../_vars';\nimport { forEach, uidGenerator } from '../../../utils/utils';\n\n@Component({\n tag: 'xv-table-v2-cell',\n styleUrl: 'xv-table-cell.scss',\n shadow: true,\n})\nexport class XvTableCell {\n @Element() el: HTMLElement;\n @Prop({ reflect: true }) width?: string;\n @Prop({ reflect: true, mutable: true }) name?: string;\n @Prop({ reflect: true }) align?: 'left' | 'right' | 'center';\n @Prop({ reflect: true, mutable: true }) sort?: XV_SORT_DIR | '';\n @Event({ eventName: 'sortChange' }) sortChange: EventEmitter<{ name?: string, value: XV_SORT_DIR }>;\n\n @Listen('click')\n handleSort() {\n if (this.sort === undefined) return;\n let sort: XV_SORT_DIR | '' = this.sort;\n if (this.sort === '') sort = XV_SORT_DIR.NONE;\n\n this.sort = sort === XV_SORT_DIR.NONE ?\n XV_SORT_DIR.ASC : sort === XV_SORT_DIR.ASC ?\n XV_SORT_DIR.DESC : XV_SORT_DIR.NONE;\n\n forEach(this.el.parentElement.children, (cell) => {\n if (cell !== this.el && cell.hasAttribute('sort')) {\n cell.setAttribute('sort', 'none');\n }\n });\n\n if (!this.name) this.name = uidGenerator();\n this.sortChange.emit({ name: this.name, value: this.sort });\n };\n\n render() {\n return (\n <Host style={{ width: this.width }}>\n <slot />\n </Host>\n );\n }\n}\n","$tag-name: xv-table-v2;\n\n:host {\n display: block;\n position: relative;\n transition: .25s ease-in-out background-color;\n\n .expand-btn {\n z-index: 9;\n position: absolute;\n left: max(10px, var(--xv-table-padding-x));\n top: max(2px, calc(var(--xv-table-padding-y) + 2px));\n background-color: transparent;\n cursor: pointer;\n outline: none;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n display: block;\n width: 8.5px;\n height: 8.5px;\n border-top: none;\n border-left: none;\n border-right: 2px solid var(--icon-primary, #333);\n border-bottom: 2px solid var(--icon-primary, #333);\n transform: rotate(45deg);\n transform-origin: center center;\n transition: .2s ease-in-out transform;\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n &.open {\n transform: rotate(-135deg);\n }\n }\n\n .expandableContent {\n overflow: hidden;\n margin: 0;\n padding: 0;\n max-height: 0;\n transition: 250ms ease max-height;\n &.open {\n max-height: 600px;\n }\n }\n\n ::slotted([slot=\"expandable\"]) {\n display: grid;\n align-items: center;\n }\n\n ::slotted(#{$tag-name}-row),\n ::slotted([slot=\"expandable\"]) {\n padding-inline-start: calc((max(10px, var(--xv-table-padding-x)) * 2) + 10px);\n }\n\n ::slotted([disabled]) {\n opacity: 0.4;\n cursor: not-allowed;\n user-select: none;\n }\n}\n","import { Component, Host, h, Element, Prop } from '@stencil/core';\nimport { XV_EXPANDABLE_KEY } from '../_vars';\nimport { setAttr } from '../../../utils/utils';\n\n@Component({\n tag: 'xv-table-v2-expand',\n styleUrl: 'xv-table-expand.scss',\n shadow: true,\n})\nexport class XvTableExpand {\n @Element() el: HTMLElement;\n @Prop({ reflect: true, mutable: true }) open: boolean = false;\n @Prop({ reflect: true }) disabled: boolean = false;\n\n private handleExpand = () => {\n this.open = !this.open;\n };\n\n render() {\n return (\n <Host>\n <button\n class={{ 'expand-btn': true, open: this.open }}\n disabled={this.disabled}\n onClick={this.handleExpand}\n />\n <slot name={XV_EXPANDABLE_KEY} />\n\n <div class={{ expandableContent: true, open: this.open }}><slot /></div>\n </Host>\n );\n }\n\n componentDidLoad() {\n setAttr(this.el.parentElement, XV_EXPANDABLE_KEY, true);\n }\n}\n",":host {\n display: grid;\n align-items: center;\n grid-template-columns: var(--xv-table-cols-template, repeat(auto-fit, minmax(0, 1fr)));\n border-bottom: 1px solid #E3E3E3;\n transition: .25s ease-in-out background-color;\n .cell-control {\n min-height: 20px;\n }\n}\n\n:host([variant]) {\n grid-template-columns: minmax(47.97px, min-content) var(--xv-table-cols-template, repeat(auto-fit, minmax(0, 1fr)));\n}\n\n:host([hover]:not([header]):hover) {\n background-color: var(--layer-hover-01, #E9E9E9);\n}\n:host([checked]) {\n background-color: var(--layer-selected-01, #E3E3E3);\n}\n:host([checked]:hover) {\n background-color: var(--layer-selected-hover-01, #DADADA);\n}\n\n:host([header]) {\n background-color: var(--layer-accent-01, #F7F7F7);\n box-shadow: 0 0 0 1px #E3E3E3 inset;\n border-bottom: none;\n}\n","import { Component, Host, h, Element, Prop, Event, EventEmitter, Watch } from '@stencil/core';\nimport { SelectRowDto, XV_EXPANDABLE_KEY, XV_TABLE_TAG } from '../_vars';\nimport { setAttr, uidGenerator } from '../../../utils/utils';\n\n@Component({\n tag: 'xv-table-v2-row',\n styleUrl: 'xv-table-row.scss',\n shadow: true,\n})\nexport class XvTableRow {\n @Element() el: HTMLElement;\n @Prop({ reflect: true, mutable: true }) checked?: SelectRowDto['checked'];\n @Prop({ reflect: true, mutable: true }) partial?: SelectRowDto['partial'];\n @Prop({ reflect: true, mutable: true }) name?: SelectRowDto['name'];\n @Prop({ reflect: true }) value?: SelectRowDto['value'];\n @Prop({ reflect: true, mutable: true }) hover?: boolean;\n @Prop({ reflect: true }) readonly?: boolean;\n @Prop({ reflect: true }) required?: boolean;\n @Prop({ reflect: true }) disabled?: boolean;\n @Prop({ reflect: true }) header?: boolean;\n @Prop({ reflect: true, mutable: true }) variant?: 'checkbox' | 'radio' | '';\n\n @Event({ eventName: 'selectRow' }) selectRow: EventEmitter<SelectRowDto>;\n\n @Watch('checked')\n checkedChangeHandle() {\n if (!this.name) this.name = uidGenerator();\n this.selectRow.emit({\n name: this.name,\n value: this.value,\n checked: this.checked,\n partial: this.partial,\n header: this.header,\n expandable: this.el.getAttribute('slot') === XV_EXPANDABLE_KEY,\n });\n }\n\n private checkHandle = ({ detail: checked }: CustomEvent<boolean>) => {\n this.checked = checked;\n if (!checked && this.partial) this.partial = checked;\n };\n\n private setInitialAttrs() {\n if (this.variant || !this.hover) {\n const tableEl = this.el.closest(XV_TABLE_TAG);\n if (!this.hover) {\n this.hover = tableEl.hasAttribute('hover');\n }\n if (this.variant) {\n setAttr(this.el.closest(XV_TABLE_TAG), `variant-${this.variant}`, !!this.variant);\n }\n }\n }\n\n render() {\n return (\n <Host>\n {this.variant !== undefined && (\n <xv-table-v2-cell class=\"cell-control\">\n {this.variant === 'checkbox' && (\n <xv-checkbox-v2\n name={this.name}\n partial={this.partial}\n checked={this.checked || this.partial}\n disabled={this.disabled}\n required={this.required}\n readonly={this.readonly}\n onEventChange={this.checkHandle}\n />\n )}\n {this.variant === 'radio' && (\n <input\n type=\"radio\"\n name={this.name}\n checked={this.checked || this.partial}\n disabled={this.disabled}\n required={this.required}\n readonly={this.readonly}\n />\n )}\n </xv-table-v2-cell>\n )}\n\n <slot />\n </Host>\n );\n }\n\n componentWillLoad() {\n this.setInitialAttrs();\n }\n}\n","export enum TAB_TAGS {\n TABS = 'xv-tabs-v2',\n TAB = 'xv-tab-v2'\n}\n\nexport enum TABS_VATIANT {\n DEFAULT = '',\n // other variants will be here\n}\n","$tab-tag: xv-tab-v2;\n$tab-text-active-color: var(--text-primary, #333);\n$tab-text-color: var(--text-secondary, #515151);\n$tab-border-active-color: var(--interactive-01, #273435);\n$tab-border-color: var(--border-border-subtle-01, #D1D1D1);\n\n:host(.xv-tabs) {\n display: flex;\n flex-direction: column;\n\n .tab-headers {\n display: flex;\n button {\n background: none;\n padding: 11px var(--gap-md, 16px);\n cursor: pointer;\n font: inherit;\n transition: border-color 0.3s ease, font-weight 0.3s ease, color 0.3s ease;\n position: relative;\n border: 2px solid transparent;\n border-bottom-color: $tab-border-color;\n background-blend-mode: multiply;\n color: $tab-text-color;\n font-family: var(--ff-body, Tahoma);\n font-size: var(--fz-md, 14px);\n line-height: 18px;\n letter-spacing: 0.16px;\n height: 40px;\n white-space: nowrap;\n\n &:after {\n content: '';\n position: absolute;\n transition: background-color 0.3s ease, width 0.3s ease;\n top: 100%;\n left: 0;\n right: 0;\n width: 0;\n height: 2px;\n background-color: $tab-border-active-color;\n }\n\n &:focus {\n outline: none;\n border: 2px solid $tab-border-color;\n }\n\n &:hover {\n border-bottom-color: var(--border-strong-01, #8B8B8B);\n }\n\n &.active {\n color: $tab-text-active-color;\n font-weight: 700;\n &:after {\n width: 100%;\n }\n\n &:focus {\n border-color: $tab-border-active-color;\n }\n }\n\n &:disabled {\n color: var(--text-on-color-disabled, #8B8B8B);\n border-bottom-color: var(--border-disabled, #D1D1D1);\n cursor: not-allowed;\n &:after {\n background-color: var(--border-disabled, #D1D1D1);\n }\n }\n }\n }\n\n .tab-content-wrapper {\n position: relative;\n overflow: hidden;\n padding: var(--gap-md, 16px) 0;\n }\n\n ::slotted(#{$tab-tag}) {\n position: absolute;\n opacity: 0;\n max-height: 0;\n transition: max-height 0.5s ease;\n width: 100%;\n pointer-events: none;\n }\n\n ::slotted(#{$tab-tag}.active) {\n position: relative;\n opacity: 1;\n overflow-y: auto;\n pointer-events: auto;\n max-height: 1000px;\n }\n}\n\n","import { Component, Host, h, Element, Prop, Event, EventEmitter, State } from '@stencil/core';\nimport { TAB_TAGS, TABS_VATIANT } from './_vars';\n\n@Component({\n tag: 'xv-tabs-v2',\n styleUrl: 'xv-tabs.scss',\n shadow: true,\n})\nexport class XvTabs {\n @Element() el: HTMLElement;\n /**\n * Index of active tab\n */\n @Prop({ reflect: true, mutable: true }) active: number = 0;\n /**\n * Variant of tabs from TABS_VATIANT enum\n */\n @Prop() variant: TABS_VATIANT = TABS_VATIANT.DEFAULT;\n /**\n * Emit event to outside\n */\n @Event() tabSelect: EventEmitter<number>;\n /**\n * local variable for tab labels collection\n */\n @State() tabElements: HTMLElement[] = [];\n\n private collectTabs = () => {\n if (!this.tabElements.length) {\n this.tabElements = Array.from(this.el.querySelectorAll(TAB_TAGS.TAB));\n }\n }\n\n private updateTabClasses() {\n this.tabElements.forEach((tab, i) => {\n tab.classList.toggle('active', i === this.active);\n });\n }\n\n private handleTabClick(index: number) {\n if (index === this.active) return;\n\n this.active = index;\n this.tabSelect.emit(this.active);\n }\n\n render() {\n return (\n <Host class=\"xv-tabs\" variant={this.variant}>\n <div class=\"tab-headers\" role=\"tablist\">\n {this.tabElements.map((tab, index) => (\n <button\n role=\"tab\"\n disabled={!!tab.getAttribute('disabled') || !!(tab as any)?.disabled}\n class={{ active: index === this.active }}\n onClick={() => this.handleTabClick(index)}\n >\n {tab.getAttribute('label') || `Tab ${index + 1}`}\n </button>\n ))}\n </div>\n\n <div\n class=\"tab-content-wrapper\"\n role=\"tabpanel\"\n tabindex={-1}\n >\n <slot onSlotchange={this.collectTabs} />\n </div>\n </Host>\n );\n }\n\n componentWillLoad() {\n // this.collectTabs();\n }\n\n componentDidRender() {\n this.updateTabClasses();\n }\n}\n",":host {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 1000px;\n background-color: var(--background);\n color: var(--text-primary);\n font-family: var(--ff-body, inherit);\n\n .xv-tag_content {\n padding-left: 8px;\n padding-right: 8px;\n color: inherit;\n font-family: var(--ff-body);\n font-style: normal;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0.32px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .xv-tag_close {\n box-sizing: border-box;\n text-decoration: none;\n border: none;\n background-color: inherit;\n outline: none;\n border-spacing: 0;\n list-style: none outside none;\n margin: 0;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 62px;\n width: 15px;\n height: 15px;\n text-align: left;\n color: inherit;\n text-indent: 0;\n transition: opacity 300ms ease-in-out, filter 300ms ease-in-out;\n &:hover {\n cursor: pointer;\n filter: brightness(80%);\n }\n\n &:active {\n opacity: 0.7;\n }\n\n &:focus {\n outline: 1px solid currentColor;\n }\n\n &:after {\n overflow: hidden;\n width: inherit;\n height: inherit;\n color: inherit;\n font-size: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n content: \"\\00d7\";\n }\n }\n}\n\n:host(.sm) {\n font-size: var(--fz-sm);\n}\n\n:host(.md) {\n font-size: var(--fz-md);\n .xv-tag_content {\n line-height: 24px;\n }\n\n .xv-tag_close {\n height: 24px;\n width: 24px;\n }\n}\n\n:host(.lg) {\n font-size: var(--fz-lg);\n .xv-tag_content {\n line-height: 26px;\n }\n\n .xv-tag_close {\n height: 26px;\n width: 26px;\n }\n}\n\n:host(.disabled) {\n pointer-events: none;\n background-color: var(--layer-01);\n color: var(--text-disabled);\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xv-tag-v2',\n styleUrl: 'xv-tag.scss',\n shadow: true,\n})\nexport class XvTag {\n @Prop() size: 'sm' | 'md' | 'lg' = 'md';\n @Prop() color: string = '';\n @Prop() bg: string = '';\n @Prop() disabled: boolean = false;\n @Prop() closeable: boolean = false;\n @Event() closeClick: EventEmitter<PointerEvent>;\n\n closeHandler(e: PointerEvent) {\n if (this.disabled) return;\n\n this.closeClick.emit(e);\n }\n\n render() {\n return (\n <Host\n style={{ color: this.color, background: this.bg }}\n class={`xv-tag ${this.disabled ? 'disabled' : ''} ${this.size}`}\n >\n <div class=\"xv-tag_content\">\n <slot></slot>\n </div>\n {this.closeable && (\n <button onClick={this.closeHandler.bind(this)} class=\"xv-tag_close\"></button>\n )}\n </Host>\n );\n }\n}\n","export enum TextInputStatus {\n ERROR = 'error',\n WARNING = 'warning',\n DEF = ''\n}\n",":host {\n --text-input-padding-x: 16px;\n --text-input-padding-y: 11px;\n\n display: inline-flex;\n flex-direction: column;\n row-gap: calc(var(--text-input-padding-y) / 2);\n text-align: left;\n font-family: var(--ff-body, Tahoma);\n\n .label {\n margin: 0;\n color: var(--text-secondary, #515151);\n font-size: var(--fz-sm, 12px);\n font-weight: 700;\n line-height: 133.333%;\n letter-spacing: 0.32px;\n }\n\n .control {\n margin: 0;\n position: relative;\n box-sizing: border-box;\n display: flex;\n column-gap: 5px;\n align-items: center;\n flex-direction: row;\n input {\n background-color: var(--field-02, #FFF);\n border: 1px solid var(--border-strong-01, #E3E3E3);\n border-radius: 3px;\n padding-block: var(--text-input-padding-y);\n padding-inline-start: var(--text-input-padding-x);\n padding-inline-end: var(--text-input-padding-x);\n flex: 1;\n outline: 2px solid transparent;\n color: var(--text-primary, #333);\n font-size: var(--fz-md, 14px);\n font-style: normal;\n font-weight: 400;\n line-height: 128.571%;\n letter-spacing: 0.16px;\n transition: 0.2s ease-in-out border-color, 0.2s ease-in-out outline-color;\n\n &.withIcon {\n padding-inline-end: calc(var(--text-input-padding-x) + 22px);\n }\n\n &::placeholder {\n color: var(--text-placeholder, #ACACAC);\n }\n\n &:focus {\n outline: 2px solid var(--focus, #273435);\n }\n }\n\n &_icon {\n position: absolute;\n top: calc(50% - 9px);\n right: var(--text-input-padding-y);\n width: 18px;\n height: 18px;\n &.error {\n color: var(--support-error, #F1290E);\n }\n\n &.warning {\n color: var(--support-warning, #FF7F04)\n }\n }\n\n &:hover {\n\n }\n }\n\n .helper {\n margin: 0;\n color: var(--text-helper, #646464);\n font-size: var(--fz-sm, 12px);\n line-height: 133.333%;\n letter-spacing: 0.32px;\n }\n}\n\n:host([status=\"error\"]) {\n .control input {\n border-color: var(--support-error, #F1290E);\n &:focus {\n outline-color: var(--support-error, #F1290E);\n }\n }\n\n .helper {\n color: var(--text-error, #D62512);\n }\n}\n\n:host([readonly]) {\n .control input {\n border-top-color: transparent;\n border-right-color: transparent;\n border-left-color: transparent;\n cursor: default;\n background-color: transparent;\n\n &:focus {\n outline-color: transparent;\n }\n }\n}\n\n:host([disabled]) {\n opacity: 0.4;\n .control input {\n cursor: not-allowed;\n }\n}\n\n:host([size=\"xs\"]) {\n --text-input-padding-y: 4px;\n --text-input-padding-x: 6px;\n}\n:host([size=\"sm\"]) {\n --text-input-padding-y: 7px;\n}\n:host([size=\"md\"]) {\n --text-input-padding-y: 11px;\n}\n:host([size=\"lg\"]) {\n --text-input-padding-y: 15px;\n}\n:host([size=\"xl\"]) {\n --text-input-padding-y: 16px;\n --text-input-padding-x: 18px;\n}\n","import { AttachInternals, Component, h, Host, Element, Prop } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\nimport { TextInputStatus } from './_vars';\n\n/**\n * xv-text-input — custom input\n * ti get data you can use default Input event\n * Angular - (input), React - (onInput), Pure - addEventListener('input', e => ...)\n */\n@Component({\n tag: 'xv-text-input-v2',\n styleUrl: 'xv-text-input.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class XvTextInput {\n @Element() el: HTMLElement;\n @Prop({ reflect: true }) label?: string;\n @Prop({ reflect: true }) placeholder?: string;\n @Prop({ reflect: true }) helper: string = '';\n @Prop({ reflect: true }) name?: string;\n @Prop({ reflect: true }) size: SIZE_VAR = SIZE_VAR.MD;\n @Prop({ reflect: true }) status: TextInputStatus = TextInputStatus.DEF;\n @Prop({ reflect: true, mutable: true }) value: string = '';\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) readonly: boolean = false;\n\n @AttachInternals() internals: ElementInternals;\n\n private handleInput = (e: InputEvent) => {\n const target = e.target as HTMLInputElement;\n this.value = target.value;\n this.internals.setFormValue(target.value);\n }\n\n render() {\n return (\n <Host name={this.name} class=\"xv-text-input\" role=\"textbox\" tabindex={this.disabled ? -1 : false}>\n {this.label && <label class=\"label\">{this.label}</label>}\n\n <div class=\"control\">\n <input\n type=\"text\"\n class={{ withIcon: this.status !== TextInputStatus.DEF }}\n readonly={this.readonly}\n value={this.value}\n disabled={this.disabled}\n onInput={this.handleInput}\n placeholder={this.placeholder}\n />\n\n {this.getControlIcon(this.status)}\n </div>\n\n {this.helper && <p class=\"helper\">{this.helper}</p>}\n </Host>\n );\n }\n\n componentWillLoad() {\n this.internals.setFormValue(this.value);\n }\n\n private getControlIcon = (status: TextInputStatus) => {\n switch (status) {\n case TextInputStatus.ERROR: {\n return (\n <svg class=\"control_icon error\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path fill=\"currentColor\"\n d=\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\" />\n </svg>\n )\n }\n case TextInputStatus.WARNING:\n return (\n <svg class=\"control_icon warning\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path fill=\"currentColor\"\n d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\" />\n </svg>\n )\n default: return null;\n }\n };\n}\n",":host {\n position: relative;\n display: inline-block;\n cursor: pointer;\n line-height: 0.5;\n}\n\n/* General styles for tooltip */\n:host::before,\n:host::after {\n position: absolute;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out;\n z-index: 10;\n}\n\n/* Tooltip */\n:host::before {\n content: attr(tooltip);\n background: var(--background-inverse, #333);\n color: var(--icon-inverse, #fff);\n padding: var(--gap-sm, 5px) var(--gap-md, 16px);\n border-radius: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: max(70vw);\n font-family: var(--fz-body, Tahoma);\n font-size: var(fz-md, 14px);\n font-weight: 400;\n line-height: 18px;\n letter-spacing: 0.16px;\n}\n\n/* Arrow */\n:host::after {\n content: \"\";\n border: 6px solid transparent;\n}\n\n/* Show Tooltip and arrow */\n:host(:hover)::before,\n:host(:hover)::after,\n:host(:focus)::before,\n:host(:focus)::after {\n opacity: 1;\n visibility: visible;\n}\n\n/* Tooltip positions */\n:host(.xv-tooltip_top)::before {\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%) translateY(-5px);\n}\n:host(.xv-tooltip_top)::after {\n bottom: 100%;\n left: 50%;\n border-top-color: var(--background-inverse, #333);\n transform: translateX(-50%) translateY(5px);\n}\n\n:host(.xv-tooltip_top-left)::before {\n bottom: 100%;\n left: 0;\n transform: translateY(-5px);\n}\n:host(.xv-tooltip_top-left)::after {\n bottom: 100%;\n left: 10px;\n border-top-color: black;\n transform: translateY(5px);\n}\n\n:host(.xv-tooltip_top-right)::before {\n bottom: 100%;\n right: 0;\n transform: translateY(-5px);\n}\n:host(.xv-tooltip_top-right)::after {\n bottom: 100%;\n right: 10px;\n border-top-color: var(--background-inverse, #333);\n transform: translateY(5px);\n}\n\n:host(.xv-tooltip_bottom)::before {\n top: 100%;\n left: 50%;\n transform: translateX(-50%) translateY(5px);\n}\n:host(.xv-tooltip_bottom)::after {\n top: 100%;\n left: 50%;\n border-bottom-color: black;\n transform: translateX(-50%) translateY(-5px);\n}\n\n:host(.xv-tooltip_bottom-left)::before {\n top: 100%;\n left: 0;\n transform: translateY(5px);\n}\n:host(.xv-tooltip_bottom-left)::after {\n top: 100%;\n left: 10px;\n border-bottom-color: var(--background-inverse, #333);\n transform: translateY(-5px);\n}\n\n:host(.xv-tooltip_bottom-right)::before {\n top: 100%;\n right: 0;\n transform: translateY(5px);\n}\n:host(.xv-tooltip_bottom-right)::after {\n top: 100%;\n right: 10px;\n border-bottom-color: var(--background-inverse, #333);\n transform: translateY(-5px);\n}\n\n:host(.xv-tooltip_left)::before {\n right: 100%;\n top: 50%;\n transform: translateY(-50%) translateX(-5px);\n}\n:host(.xv-tooltip_left)::after {\n right: 100%;\n top: 50%;\n border-left-color: var(--background-inverse, #333);\n transform: translateY(-50%) translateX(5px);\n}\n\n:host(.xv-tooltip_right)::before {\n left: 100%;\n top: 50%;\n transform: translateY(-50%) translateX(5px);\n}\n:host(.xv-tooltip_right)::after {\n left: 100%;\n top: 50%;\n border-right-color: var(--background-inverse, #333);\n transform: translateY(-50%) translateX(-5px);\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xv-tooltip-v2',\n styleUrl: 'xv-tooltip.scss',\n shadow: true,\n})\nexport class XvTooltip {\n /** Message what will be shown for tooltip **/\n @Prop() message: string;\n /**\n * Tooltip and arrow position related to element\n * possible options: 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right' | 'left' | 'right'.\n * By default, \"top\"\n */\n @Prop() position: 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right' | 'left' | 'right' = 'top';\n\n render() {\n return (\n <Host tooltip={this.message} class={`xv-tooltip_${this.position}`}>\n <slot>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" width={16} height={16}>\n <path\n fill=\"currentColor\"\n d=\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-88c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 64-24 0zm40-144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"\n />\n </svg>\n </slot>\n </Host>\n );\n }\n}\n"],"mappings":"yHAAA,MAAMA,EAAiB,uBACvB,MAAAC,EAAeD,E,MCOFE,EAAW,MALxB,WAAAC,CAAAC,G,2DAMUC,KAAAC,SAAoB,MACpBD,KAAAE,KAAeC,IAEdH,KAAAI,OAAsB,IAAIC,G,CAInC,gBAAMC,CAAWC,GACf,GAAIP,KAAKI,OAAOI,IAAID,GAAQ,CAC1BP,KAAKI,OAAOK,OAAOF,E,KACd,CACL,IAAKP,KAAKC,SAAUD,KAAKI,OAAOM,QAChCV,KAAKO,MAAQA,EACbP,KAAKI,OAAOO,IAAIX,KAAKO,M,CAGvBP,KAAKY,gBAAgBC,KAAK,CAAET,OAAQJ,KAAKI,OAAQU,GAAId,KAAKE,OAE1D,MAAO,CAAEE,OAAQJ,KAAKI,OAAQU,GAAId,KAAKE,K,CAGzC,iBAAAa,GACE,GAAIf,KAAKO,MAAO,CACd,OAAOP,KAAKM,WAAWN,KAAKO,M,EAIhC,MAAAS,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAM,eAAc,UAAUpB,KAAKE,MACvCe,EAAA,QAAAE,IAAA,6C,aCvCR,MAAME,EAAqB,uqCAC3B,MAAAC,EAAeD,E,MCMFE,EAAe,MAL5B,WAAAzB,CAAAC,G,iDAOUC,KAAAwB,SAAoB,MAGnBxB,KAAAyB,OAAkB,K,CAI3B,qBAAAC,CAAsBC,G,MACpB,MAAMC,GAAoBC,EAAA7B,KAAK8B,GAAGC,QAAQ,gBAAY,MAAAF,SAAA,SAAAA,EAAEG,aAAa,WACrE,GAAIL,EAAMM,OAAOnB,KAAOc,EAAmB,OAC3C5B,KAAKyB,OAASE,EAAMM,OAAO7B,OAAOI,IAAIR,KAAKO,M,CAG7C,MAAA2B,G,QACE,GAAIlC,KAAKwB,SAAU,OACnBxB,KAAKyB,QAAUzB,KAAKyB,QACpBU,GAAAN,EAAA7B,KAAK8B,GAAGC,QAAQ,sBAAkB,MAAAF,SAAA,SAAAA,EAAEvB,cAAU,MAAA6B,SAAA,SAAAA,EAAAC,KAAAP,EAAG7B,KAAKO,M,CAGxD,MAAAS,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAO,GAAGpB,KAAKwB,SAAW,WAAa,MAC3CP,EAAA,SAAAE,IAAA,2CAAOC,MAAO,SAASpB,KAAKyB,OAAS,SAAW,WAAYY,QAASrC,KAAKkC,OAAOI,KAAKtC,OACpFiB,EAAA,QAAAE,IAAA,4CAAOnB,KAAKuC,QAEdtB,EAAA,OAAAE,IAAA,2CAAKC,MAAO,WAAWpB,KAAKyB,OAAS,SAAW,YAC9CR,EAAA,QAAAE,IAAA,8C,qCCnCV,MAAMqB,EAAgB,09IACtB,MAAAC,EAAeD,E,MCOFE,EAAQ,MALrB,WAAA5C,CAAAC,G,mDAOUC,KAAAuC,MAAgB,GAGhBvC,KAAA2C,MAAiB,MAGjB3C,KAAA4C,KAAsC,SAGtC5C,KAAA6C,QAAqE,UAGrE7C,KAAAwB,SAAoB,MAMpBxB,KAAA8C,YAAeC,IACrB,GAAI/C,KAAKwB,SAAU,OACnBxB,KAAKgD,YAAYnC,KAAKkC,EAAE,C,CAG1B,MAAA/B,GACE,OACEC,EAAA,UAAAE,IAAA,2CACEyB,KAAM5C,KAAK4C,KACXK,KAAK,SACL7B,MAAO,aAAapB,KAAK6C,WAAW7C,KAAK2C,MAAQ,kBAAoB,KACrEnB,SAAUxB,KAAKwB,SACfa,QAASrC,KAAK8C,aAEd7B,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,cAEXjC,EAAA,QAAAE,IAAA,4CACGnB,KAAKuC,OAGRtB,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,e,aChDnB,MAAMC,EAAY,kuCAClB,MAAAC,EAAeD,E,MCMFE,EAAM,MALnB,WAAAvD,CAAAC,G,UAMUC,KAAA6C,QAAqC,U,CAK7C,MAAA7B,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAO,mBAAmBpB,KAAK6C,UAAWI,KAAMjD,KAAK6C,SACzD5B,EAAA,OAAAE,IAAA,2CAAKC,MAAM,iBACTH,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,SACRlD,KAAKsD,OAASrC,EAAA,OAAAE,IAAA,2CAAKC,MAAM,yBAAyBmC,IAAKvD,KAAKsD,MAAOE,IAAKxD,KAAKyD,WAIlFxC,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mBACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,kBACTH,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,UACRlD,KAAKyD,QAAUxC,EAAA,KAAAE,IAAA,2CAAGC,MAAM,2BAA2BpB,KAAKyD,UAG7DxC,EAAA,OAAAE,IAAA,2CAAKC,MAAM,gBACTH,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,QACRlD,KAAK0D,MAAQzC,EAAA,KAAAE,IAAA,2CAAGC,MAAM,yBAAyBpB,KAAKyD,UAGzDxC,EAAA,OAAAE,IAAA,2CAAKC,MAAM,kBACTH,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,UAAUlD,KAAK2D,U,aClCtC,MAAMC,EAAgB,i8FACtB,MAAAC,EAAeD,E,MCQFE,EAAU,MAgErB,WAAAhE,CAAAC,G,8KAvDwCC,KAAA+D,QAAmB,MAIlC/D,KAAAgE,cAAyB,MAIzBhE,KAAAwB,SAAoB,MAQpBxB,KAAAO,MAAgB,KAIhBP,KAAAiE,SAAoB,MAIpBjE,KAAAkE,SAAoB,MAIpBlE,KAAAmE,QAAmB,MASnCnE,KAAAoE,SAAoB,MAmCrBpE,KAAAqE,QAAWtB,IACjB,MAAMuB,EAASvB,EAAEuB,OACjBtE,KAAK+D,QAAUO,EAAOP,QACtB/D,KAAKuE,WAAW1D,KAAKb,KAAK+D,QAAQ,EAG5B/D,KAAAwE,SAAYzB,IAClB,GAAI/C,KAAKwB,UAAYxB,KAAKiE,SAAU,OACpC,MAAMK,EAASvB,EAAEuB,OACjBtE,KAAK+D,QAAUO,EAAOP,QACtB/D,KAAKyE,YAAY5D,KAAKb,KAAK+D,QAAQ,EAG7B/D,KAAA0E,QAAU,KAChB1E,KAAKoE,SAAW,KAChBpE,KAAK2E,WAAW9D,MAAM,EAGhBb,KAAA4E,OAAS,KACf5E,KAAKoE,SAAW,MAChBpE,KAAK6E,UAAUhE,MAAM,EApCrBb,KAAK8E,YAAY3C,GAAAN,EAAC7B,KAAK8B,IAAWiD,mBAAe,MAAA5C,SAAA,SAAAA,EAAAC,KAAAP,KAAQ,E,CAG3D,iBAAAmD,G,MACE,IAAInD,EAAA7B,KAAK8E,aAAS,MAAAjD,SAAA,SAAAA,EAAEoD,aAAc,CAChCjF,KAAK8E,UAAUG,aAAajF,KAAK+D,QAAU/D,KAAKO,MAAQ,K,EAK5D,eAAA2E,CAAgBC,G,MACd,IAAItD,EAAA7B,KAAK8E,aAAS,MAAAjD,SAAA,SAAAA,EAAEoD,aAAc,CAChCjF,KAAK8E,UAAUG,aAAaE,EAAWnF,KAAKO,MAAQ,K,EA2BxD,MAAAS,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,SAAAE,IAAA,2CAAOC,MAAO,CAAE,cAAe,KAAMI,SAAUxB,KAAKwB,SAAUyC,SAAUjE,KAAKiE,WAC3EhD,EAAA,SAAAE,IAAA,2CACEiE,IAAKtD,GAAO9B,KAAKqF,QAAUvD,EAC3Bc,KAAK,WACLqB,SAAUjE,KAAKiE,SACff,KAAMlD,KAAKkD,KACX3C,MAAOP,KAAKO,MACZwD,QAAS/D,KAAK+D,QACdvC,SAAUxB,KAAKwB,UAAYxB,KAAKiE,SAChCC,SAAUlE,KAAKkE,SACfF,cAAehE,KAAKgE,cACpBK,QAASrE,KAAKqE,QACdG,SAAUxE,KAAKwE,SACfE,QAAS1E,KAAK0E,QACdE,OAAQ5E,KAAK4E,SAEf3D,EAAA,QAAAE,IAAA,2CAAMC,MAAO,aAAapB,KAAKmE,QAAU,oBAAsB,OAC/DlD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,SACTH,EAAA,QAAAE,IAAA,4CAAOnB,KAAKuC,OAAStB,EAAA,QAAAE,IAAA,2CAAMC,MAAM,aAAapB,KAAKuC,UAGvDtB,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,WACRlD,KAAKsF,OAASrE,EAAA,QAAAE,IAAA,2CAAMC,MAAM,SAASpB,KAAKsF,O,CAKjD,gBAAAC,GACE,GAAIvF,KAAKgE,cAAe,CACtBhE,KAAKqF,QAAQrB,cAAgB,I,EAIjC,kBAAAwB,GACE,GAAIxF,KAAKqF,QAAS,CAChBrF,KAAKqF,QAAQrB,cAAgBhE,KAAKgE,a,EAItC,iBAAAyB,GACEzF,KAAK+D,QAAU,K,CAGjB,wBAAA2B,CAAyBC,GACvB3F,KAAK+D,QAAU4B,IAAU3F,KAAKO,K,uIChKlC,IAAYqF,GAAZ,SAAYA,GACVA,EAAA,WACAA,EAAA,WACAA,EAAA,WACAA,EAAA,WACAA,EAAA,UACD,EAND,CAAYA,MAAQ,KCMb,MAAMC,EAAuB,oBCNpC,MAAMC,EAAgB,onJACtB,MAAAC,EAAeD,E,MCSFE,EAAU,MALvB,WAAAlG,CAAAC,G,2DAgBUC,KAAAiG,KAAiBL,EAASM,GAGzBlG,KAAAmG,SAAuC,GACvCnG,KAAAoG,YAAgE,IAAIC,IAgDrErG,KAAAsG,YAAc,CAACF,EAAsCG,KAC3D,MAAMC,EAASC,MAAMC,KAAKN,EAAYI,UACtC,MAAMG,EAAUJ,GAAevG,KAAK8B,GAAG8E,iBAAiBf,GAExD7F,KAAKmG,SAAWK,EAAOK,SAAWF,EAAQE,OACxC,CAAC,mBAAqBL,EAAOK,OAAS,EACpC,CAAC,GAAGL,EAAOK,qBAAuBL,EAAOM,KAAKC,GAAMA,EAAEC,OAE1D,OAAOR,CAAM,EAGPxG,KAAAiH,WAAa,KACnB,GAAIjH,KAAKwB,UAAYxB,KAAKkH,KAAM,OAChClH,KAAKkH,KAAO,IAAI,EAGVlH,KAAAmH,mBAAsBC,IAC5B,IAAKpH,KAAKkH,MAAQlH,KAAK8B,GAAGuF,SAASD,EAAG9C,QAAiB,OAEvD,GAAItE,KAAKkH,KAAMlH,KAAKkH,KAAO,KAAK,EAG1BlH,KAAAsH,aAAe,KACrBC,SAAS7D,KAAK8D,iBAAiB,QAASxH,KAAKmH,mBAAmB,EAG1DnH,KAAAyH,gBAAkB,KACxBF,SAAS7D,KAAKgE,oBAAoB,QAAS1H,KAAKmH,mBAAmB,EAG7DnH,KAAA2H,iBAAmB,KACzB,IAAK3H,KAAK4H,aAAc,OAGxBC,YAAW,KACT,MAAMlB,EAAU3G,KAAK8B,GAAG8E,iBAAiBf,GAEzCiC,EACEnB,GACCoB,IACC,MAAMC,EAAqC,CACzCzH,MAAOwH,EAAO/F,aAAa,SAC3BgF,KAAOe,EAAeE,UACtB9B,SAAU,GAAGnG,KAAK4H,iBAAmBG,EAAO/F,aAAa,UAG3D,GAAIgG,EAAiB7B,SAAU,CAC7B+B,EAAQH,EAAQ,WAAYC,EAAiB7B,UAC7CnG,KAAKoG,YAAY+B,IAAIH,EAAiBzH,MAAOyH,E,KAKnDhI,KAAKsG,YAAYtG,KAAKoG,YAAaO,EAAQ,GAC3C,C,CAjGJ,gBAAAyB,GACE,GAAIpI,KAAKwB,SAAU,OAEnB,GAAIxB,KAAKkH,KAAM,CACblH,KAAKsH,c,KACA,CACLtH,KAAKyH,iB,EAKT,kBAAAY,EAAmBpG,OAAEA,IACnB,MAAMqG,EAAUtI,KAAKoG,YAAY5F,IAAIyB,EAAO1B,OAE5C,GAAIP,KAAKC,SAAU,CACjB,GAAIgC,EAAOkE,SAAU,CACnB,IAAKmC,EAAStI,KAAKoG,YAAY+B,IAAIlG,EAAO1B,MAAO0B,E,KAC5C,CACL,GAAIqG,EAAS,CACX,GAAItI,KAAKkE,UAAYlE,KAAKoG,YAAYH,OAAS,EAAG,OAClDjG,KAAKoG,YAAY3F,OAAOwB,EAAO1B,M,OAG9B,CACL,GAAI0B,EAAOkE,SAAU,CACnBnG,KAAKoG,YAAY1F,QACjBV,KAAKoG,YAAY+B,IAAIlG,EAAO1B,MAAO0B,E,KAC9B,CACL,IAAKjC,KAAKkE,SAAUlE,KAAKoG,YAAY1F,O,CAEvCV,KAAKkH,KAAO,K,CAGd,MAAMqB,EAAiBvI,KAAK8B,GAAG8E,iBAAiBf,GAEhDiC,EACES,GACCR,GAAWG,EAAQH,EAAQ,WAAY/H,KAAKoG,YAAY5F,IAAIuH,EAAO/F,aAAa,aAGnFhC,KAAKwI,gBAAgB3H,KAAKb,KAAKsG,YAAYtG,KAAKoG,YAAamC,G,CA4D/D,MAAAvH,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAAC8E,KAAMjG,KAAKiG,KAAM7E,MAAM,cAAcqH,KAAK,WAAWC,SAAU1I,KAAKwB,UAAY,EAAI,OACxFP,EAAA,SAAAE,IAAA,2CAAOC,MAAM,SACXH,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,SAASlD,KAAKuC,QAG3BtB,EAAA,OAAAE,IAAA,2CAAKC,MAAM,8BAA8BiB,QAASrC,KAAKiH,YACpDjH,KAAKmG,SAASU,OACb5F,EAAA,KAAGG,MAAM,iBAAiBpB,KAAKmG,SAASwC,KAAK,OAE7C1H,EAAA,KAAGG,MAAM,uBAAuBpB,KAAK4I,aAAe,IAGrD5I,KAAKsF,OACJrE,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBAAqByH,MAAM,6BAA6BC,QAAQ,eACzE7H,EAAA,QAAAE,IAAA,2CAAM4H,KAAK,eAAeC,EAAE,qMAG7BhJ,KAAKsF,SAAWtF,KAAKiJ,SACtBhI,EAAA,OAAAE,IAAA,2CAAKC,MAAM,uBAAuByH,MAAM,6BAA6BC,QAAQ,eAC3E7H,EAAA,QAAAE,IAAA,2CAAM4H,KAAK,eAAeC,EAAE,6TAIhC/H,EAAA,OAAAE,IAAA,2CAAKC,MAAM,gBAAgB8H,UAAU,QAAQC,oBAAoB,gBAC5DN,MAAM,6BACNE,KAAK,eAAc,cAAa,OAAOK,MAAM,KAAKC,OAAO,KAAKP,QAAQ,aACzE7H,EAAA,QAAAE,IAAA,2CAAM6H,EAAE,6CAIXhJ,KAAKkH,MAAQjG,EAAA,OAAAE,IAAA,2CAAKC,MAAM,WACvBH,EAAA,QAAME,IAAI,0BAGVnB,KAAKsJ,QAAUtJ,KAAKsF,OAAStF,KAAKiJ,UAClChI,EAAA,KAAAE,IAAA,2CAAGC,MAAM,UAAUpB,KAAKsF,OAAStF,KAAKiJ,SAAWjJ,KAAKsJ,Q,CAM9D,iBAAAvI,GACEf,KAAK2H,kB,CAGP,gBAAApC,GACEvF,KAAKoI,kB,CAGP,oBAAAmB,GACEvJ,KAAKyH,iB,6FCtLT,MAAM+B,EAAoB,+OAC1B,MAAAC,EAAeD,E,MCaFE,EAAc,MAL3B,WAAA5J,CAAAC,G,qDAOUC,KAAAwB,SAAoB,MACYxB,KAAAO,MAAmC,GACnCP,KAAAmG,SAAyC,K,CAIjF,WAAArD,GACE,GAAI9C,KAAKwB,SAAU,OAEnBxB,KAAK2J,aAAa9I,KAAK,CACrBsF,UAAWnG,KAAKmG,SAChB5F,MAAOP,KAAKO,MACZyG,KAAMhH,KAAK8B,GAAGmG,W,CAKlB,MAAAjH,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAM,mBAAmBb,MAAOP,KAAKO,MAAOkI,KAAK,SAASC,SAAU1I,KAAKwB,UAAY,EAAI,OAC7FP,EAAA,QAAAE,IAAA,6CAECnB,KAAKmG,UAAYlF,EAAA,QAAAE,IAAA,2CAAMC,MAAM,c,CAKpC,iBAAAL,GACE,IAAKf,KAAKO,MAAOP,KAAKO,MAAQP,KAAK8B,GAAGmG,S,qCC5C1C,MAAM2B,EAAc,skMACpB,MAAAC,EAAeD,E,MCKFE,EAAQ,MAJrB,WAAAhK,CAAAC,G,UAKWC,KAAA+J,YAAsB,E,CAG/B,uBAAMhJ,GACJ,IACE,MAAMiJ,QAAiBC,MAAM,sEAC7B,MAAMjD,QAAagD,EAAShD,OAC5BhH,KAAK+J,YAAc/C,C,CACnB,MAAO1B,GACP4E,QAAQ5E,MAAM,+BAAgCA,E,EAIlD,MAAAtE,GACE,OACIC,EAAA,UAAAE,IAAA,4CACAF,EAAA,OAAAE,IAAA,2CAAKgJ,UAAWnK,KAAK+J,c,qCCvB7B,MAAMK,EAAc,gj4TACpB,MAAAC,EAAeD,E,MCKFE,EAAQ,MAJrB,WAAAxK,CAAAC,G,UAKWC,KAAA+J,YAAsB,E,CAG/B,uBAAMhJ,GACJ,IACE,MAAMiJ,QAAiBC,MAAM,mEAC7B,MAAMjD,QAAagD,EAAShD,OAC5B,MAAMuD,EAAS,IAAIC,UACnB,MAAMC,EAAMF,EAAOG,gBAAgB1D,EAAM,aAE3C,MAAM2D,EAAYF,EAAIG,cAAc,yBACpC,MAAMC,EAAwBJ,EAAIG,cAAc,+BAChD,MAAME,EAAyBL,EAAIG,cAAc,qDAEjD,GAAID,GAAaE,GAAyBC,EAAwB,CAChEA,EAAuBC,YAAYJ,GACnCG,EAAuBC,YAAYF,E,CAGrC7K,KAAK+J,YAAcU,EAAI/G,KAAKyG,S,CAC1B,MAAO7E,GACP4E,QAAQ5E,MAAM,+BAAgCA,E,EAIlD,MAAAtE,GACE,OACEC,EAAA,OAAAE,IAAA,2CAAKL,GAAG,gBAAgBM,MAAM,aAC5BH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,iEACXH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,aACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,OACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,gDACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,iBACTH,EAAA,UAAAE,IAAA,2CAAQC,MAAM,qDAAoD,cAAa,WAAU,cAAa,cACpGH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,mBAAkB,cAAa,UAE1CH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACTH,EAAA,KAAAE,IAAA,2CAAG6J,KAAK,gCAAgC5J,MAAM,gBAC5CH,EAAA,OAAAE,IAAA,2CAAKoC,IAAI,4FAA4FC,IAAI,mBAG7GvC,EAAA,OAAAE,IAAA,2CAAKC,MAAM,aACTH,EAAA,KAAAE,IAAA,2CAAG6J,KAAK,gCAAgC5J,MAAM,gBAC5CH,EAAA,OAAAE,IAAA,2CAAK8J,QAAQ,OAAO1H,IAAI,sFAAsFC,IAAI,qBAK1HvC,EAAA,OAAAE,IAAA,2CAAKC,MAAM,+CACTH,EAAA,MAAAE,IAAA,2CAAIC,MAAM,qCACRH,EAAA,MAAAE,IAAA,4CACEF,EAAA,KAAAE,IAAA,2CAAGC,MAAM,oCAAoC4J,KAAK,KAChD/J,EAAA,KAAAE,IAAA,2CAAGC,MAAM,eACTH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,yBAGbH,EAAA,MAAAE,IAAA,4CACEF,EAAA,KAAAE,IAAA,2CAAGC,MAAM,oCAAoC4J,KAAK,KAAG,WACrD/J,EAAA,KAAAE,IAAA,2CAAG6J,KAAK,uCAAuC5J,MAAM,oCAAoC8J,MAAO,CAAEC,QAAS,SAAQ,WACnHlK,EAAA,KAAAE,IAAA,2CAAGC,MAAM,4DAA4D4J,KAAK,KACxE/J,EAAA,KAAAE,IAAA,2CAAGC,MAAM,kBAGbH,EAAA,MAAAE,IAAA,2CAAIC,MAAM,WAAWN,GAAG,cACtBG,EAAA,KAAAE,IAAA,2CAAG6J,KAAK,IAAI5J,MAAM,sDAAqD,cAAa,YAClFH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,gCAA+B,cAAa,SAAW,IAChEH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,aAAW,gBACvBH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,WAEdH,EAAA,MAAAE,IAAA,2CAAIC,MAAM,gDACRH,EAAA,MAAAE,IAAA,4CACEF,EAAA,KAAAE,IAAA,2CAAG6J,KAAK,KAAI/J,EAAA,KAAAE,IAAA,2CAAGC,MAAM,+BAAiC,sBAA6BH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,uBAE9FH,EAAA,MAAAE,IAAA,4CACEF,EAAA,KAAAE,IAAA,2CAAG6J,KAAK,KAAI/J,EAAA,KAAAE,IAAA,2CAAGC,MAAM,gBAAkB,cAAqBH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,uBAEvEH,EAAA,MAAAE,IAAA,2CAAIsH,KAAK,YAAYrH,MAAM,YAC3BH,EAAA,MAAAE,IAAA,4CACEF,EAAA,KAAAE,IAAA,2CAAG6J,KAAK,KAAI/J,EAAA,KAAAE,IAAA,2CAAGC,MAAM,eAAiB,sBAA6BH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,SAAO,KAASH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,uBAE1GH,EAAA,MAAAE,IAAA,4CACEF,EAAA,KAAAE,IAAA,2CAAG6J,KAAK,iHACN/J,EAAA,KAAAE,IAAA,2CAAGC,MAAM,2BAA0B,cAAa,SAAW,cAKnEH,EAAA,MAAAE,IAAA,2CAAIC,MAAM,gDACRH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,sCAAqC,cAAa,WAAU,cAAa,oBAChFH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,eAAc,cAAa,WAGxCH,EAAA,MAAAE,IAAA,2CAAIC,MAAM,uBACRH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,sCAAsC4J,KAAK,sHAClD/J,EAAA,KAAAE,IAAA,2CAAGC,MAAM,mBAAkB,cAAa,SACxCH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,aAAW,WAG3BH,EAAA,MAAAE,IAAA,2CAAIC,MAAM,uBACRH,EAAA,KAAAE,IAAA,2CAAGsH,KAAK,SAASrH,MAAM,sCAAqC,cAAa,QAAO,cAAa,gBAC3FH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,mBAAkB,cAAa,SACxCH,EAAA,QAAAE,IAAA,uDAGJF,EAAA,MAAAE,IAAA,2CAAIC,MAAM,aACRH,EAAA,KAAAE,IAAA,2CAAGC,MAAM,sCAAsC4J,KAAK,yEAClD/J,EAAA,QAAAE,IAAA,8DAGJF,EAAA,MAAAE,IAAA,2CAAIC,MAAM,6BACVH,EAAA,MAAAE,IAAA,4CACEF,EAAA,KAAAE,IAAA,2CAAGC,MAAM,6BAA6B4J,KAAK,gFACzC/J,EAAA,QAAAE,IAAA,2CAAMC,MAAM,qCAAoC,cAAa,SAC7DH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,uBAAqB,eACjCH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,uBAAqB,WAO7CH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,+BAA+BN,GAAG,mBAC3CG,EAAA,OAAAE,IAAA,2CAAKC,MAAM,aACTH,EAAA,QAAAE,IAAA,2CAAMiK,OAAO,qDAAqDhK,MAAM,cAAciK,OAAO,MAAM5C,KAAK,UACtGxH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACTH,EAAA,SAAAE,IAAA,2CAAOC,MAAM,eAAe8B,KAAK,IAAI0F,YAAY,QAAQhG,KAAK,OAAO0I,aAAa,QAClFrK,EAAA,QAAAE,IAAA,2CAAMC,MAAM,oCACVH,EAAA,UAAAE,IAAA,2CAAQC,MAAM,+BAA+BwB,KAAK,UAChD3B,EAAA,KAAAE,IAAA,2CAAGC,MAAM,eAAc,cAAa,gBAQhDH,EAAA,OAAAE,IAAA,2CAAKgJ,UAAWnK,KAAK+J,c,qCC/I7B,MAAMwB,EAAY,wgCAClB,MAAAC,EAAeD,E,MCMFE,EAAM,MALnB,WAAA3L,CAAAC,G,UAQUC,KAAAwB,SAAoB,MACpBxB,KAAAiG,KAA2B,KAC3BjG,KAAA6C,QAAmC,Q,CAE3C,kBAAA6I,CAAmB3I,GACjB,IAAK/C,KAAKwB,SAAU,OAEpBuB,EAAE4I,iBACF5I,EAAE6I,iB,CAGJ,MAAA5K,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAO,WAAWpB,KAAK6C,WAC3B5B,EAAA,KAAAE,IAAA,2CACE6J,KAAMhL,KAAKgL,KACX3I,QAASrC,KAAK0L,mBAAmBpJ,KAAKtC,MACtCoB,MAAO,WAAWpB,KAAKwB,SAAW,mBAAqB,MAAMxB,KAAKiG,OAClE3B,OAAQtE,KAAKsE,QAEbrD,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,cAEXjC,EAAA,QAAAE,IAAA,6CAEAF,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,gB,aClCrB,MAAM2I,EAAc,u+BACpB,MAAAC,EAAeD,E,MCOFE,EAAQ,MALrB,WAAAjM,CAAAC,G,UASUC,KAAAgM,KAAgB,KAIhBhM,KAAA6C,QAAqC,aAIrC7C,KAAAiG,KAAiBL,EAASM,E,CAElC,MAAAlF,GACE,IAAKhB,KAAKgM,KAAM,OAAO,KAEvB,OACE/K,EAACC,EAAI,CAACE,MAAO,CAAE,YAAa,MAAQ6E,KAAMjG,KAAKiG,MAC7ChF,EAAA,QAAMiC,KAAK,WACXjC,EAAA,OAAKG,MAAO,CAAC6K,QAAS,QACtBhL,EAAA,a,aC7BR,MAAMiL,EAAa,qhDACnB,MAAAC,EAAeD,E,MCOFE,EAAO,MALpB,WAAAtM,CAAAC,G,iDAU0CC,KAAAkH,KAAgB,MAIhDlH,KAAAqM,UAAqB,MAIrBrM,KAAAiG,KAAiBL,EAASM,GAI1BlG,KAAAsM,UAAgC,KAgBhCtM,KAAAuM,gBAAkBC,MAAOzJ,IAC/B,GAAI/C,KAAKqM,UAAW,OAEpB,GAAItJ,EAAEuB,SAAWvB,EAAE0J,cAAe,OAC1BzM,KAAK0M,Y,GAIP1M,KAAA2M,sBAAwB,K,OAC9B9K,EAAA7B,KAAKsM,aAAS,MAAAzK,SAAA,SAAAA,EAAE6F,oBAAoB,QAAS1H,KAAK4M,UAAUtK,KAAKtC,MAAM,EAGjEA,KAAA6M,aAAe,KACrB7M,KAAK2M,wBACL,MAAMG,EAAO9M,KAAK8B,GAAGiL,WAAWnC,cAAc,wBAE9C,GAAIkC,EAAM,CACR,MAAME,EAAWF,EAAKG,mBACtB,GAAID,EAASnG,OAAS,EAAG,CACvB7G,KAAKsM,UAAYU,EAAS,GAC1BhN,KAAKsM,UAAU9E,iBAAiB,QAASxH,KAAK4M,UAAUtK,KAAKtC,M,IAjCnE,eAAM4M,G,MACJ5M,KAAKkH,KAAO,MACZrF,EAAA7B,KAAKkN,cAAU,MAAArL,SAAA,SAAAA,EAAEhB,KAAKb,KAAKkH,MAC3B,OAAOlH,KAAKkH,I,CAId,gBAAMwF,G,MACJ1M,KAAKkH,KAAO,OACZrF,EAAA7B,KAAKkN,cAAU,MAAArL,SAAA,SAAAA,EAAEhB,KAAKb,KAAKkH,MAC3B,OAAOlH,KAAKkH,I,CA4Bd,MAAAlG,G,MACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACsH,KAAK,SAASxC,KAAMjG,KAAKiG,KAAMnF,GAAId,KAAK8B,GAAGhB,IAC/CG,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,UAAUiK,aAAcnN,KAAK6M,eAExC5L,EAAA,OAAAE,IAAA,2CAAKC,MAAO,CAAEgM,SAAU,MAAQ/K,QAASrC,KAAKuM,iBAC5CtL,EAAA,OAAAE,IAAA,2CAAKC,MAAM,SACTH,EAAA,UAAAE,IAAA,2CAAQC,MAAM,cAAciB,QAASrC,KAAK0M,WAAWpK,KAAKtC,OAAK,KAC/DiB,EAAA,OAAAE,IAAA,2CAAKC,MAAM,gBACTH,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,YACRrB,EAAA7B,KAAK8B,MAAE,MAAAD,SAAA,SAAAA,EAAEwL,QAASpM,EAAA,MAAAE,IAAA,2CAAIC,MAAM,uBAAuBpB,KAAK8B,GAAGuL,SAIhEpM,EAAA,OAAAE,IAAA,2CAAKC,MAAM,iBACTH,EAAA,QAAAE,IAAA,8CAGFF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,gBACTH,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,c,CAQvB,oBAAAqG,GACEvJ,KAAK2M,uB,qCC9FT,IAAYW,GAAZ,SAAYA,GACVA,EAAA,eACAA,EAAA,qBACAA,EAAA,qBACAA,EAAA,gBACD,EALD,CAAYA,MAAqB,KCAjC,MAAMC,EAAoB,kwEAC1B,MAAAC,EAAeD,E,MCQFE,EAAc,MAN3B,WAAA3N,CAAAC,G,uCAQUC,KAAA6C,QAAiCyK,EAAsBI,KACvD1N,KAAA2N,YAAuB,MAGvB3N,KAAA4N,YAAe7K,GAAkB/C,KAAK6N,MAAMhN,KAAKkC,GAoBjD/C,KAAA8N,WAAa,CAACjL,EAAgCkL,EAAc,UAClE,OAAQlL,GACN,KAAKyK,EAAsBU,MAAO,CAChC,OACE/M,EAAA,OAAKG,MAAO2M,EAAKlF,MAAM,6BAA6BC,QAAQ,eAC1D7H,EAAA,QACE+H,EAAE,6R,CAIV,KAAKsE,EAAsBI,KAAM,CAC/B,OACEzM,EAAA,OAAKG,MAAO2M,EAAKlF,MAAM,6BAA6BC,QAAQ,eAC1D7H,EAAA,QACE+H,EAAE,6Q,CAIV,KAAKsE,EAAsBW,QAAS,CAClC,OACEhN,EAAA,OAAKG,MAAO2M,EAAKlF,MAAM,6BAA6BC,QAAQ,eAC1D7H,EAAA,QACE+H,EAAE,sM,CAIV,KAAKsE,EAAsBY,QAAS,CAClC,OACEjN,EAAA,OAAKG,MAAO2M,EAAKlF,MAAM,6BAA6BC,QAAQ,eAC1D7H,EAAA,QACE+H,EAAE,4T,CAIV,QACE,OAAO,K,EArDb,MAAAhI,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAM,kBAAkBwB,KAAM5C,KAAK6C,SACtC7C,KAAK8N,WAAW9N,KAAK6C,SAEtB5B,EAAA,OAAAE,IAAA,2CAAKC,MAAM,WACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mBACRpB,KAAK8B,GAAGuL,OAASpM,EAAA,MAAAE,IAAA,2CAAIC,MAAM,iBAAiBpB,KAAK8B,GAAGuL,OACrDpM,EAAA,QAAAE,IAAA,8CAEFF,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,YAGZlD,KAAK2N,aAAe1M,EAAA,UAAAE,IAAA,2CAAQC,MAAM,QAAQiB,QAASrC,KAAK4N,c,6FC9BjE,MAAMO,EAAoB,y8DAC1B,MAAAC,EAAeD,E,MCQFE,EAAc,MAL3B,WAAAvO,CAAAC,G,iDAO0CC,KAAAkH,KAAgB,MAC/BlH,KAAAwB,SAAoB,MACrCxB,KAAAsO,SAA6B,OAC7BtO,KAAAiG,KAAiBL,EAASM,GAwB1BlG,KAAAuO,YAAc,KACpB,GAAIvO,KAAKkH,KAAMlH,KAAKkH,KAAO,KAAK,EAG1BlH,KAAAyH,gBAAkB,KACxBzH,KAAK8B,GAAG4F,oBAAoB,YAAa1H,KAAKwO,kBAC9CjH,SAAS7D,KAAKgE,oBAAoB,QAAS1H,KAAK8C,YAAY,EAGtD9C,KAAA8C,YAAesE,IACrB,IAAKpH,KAAKkH,MAAQlH,KAAK8B,GAAGuF,SAASD,EAAG9C,QAAiB,OAEvD8C,EAAGwE,kBACHxE,EAAGuE,iBACH3L,KAAKuO,aAAa,EAGZvO,KAAAyO,aAAe,KACrBzO,KAAKkH,MAAQlH,KAAKkH,IAAI,EAGhBlH,KAAAwO,iBAAmB,EAAGvM,aAC5BjC,KAAK0O,WAAW7N,KAAKoB,GACrBjC,KAAKuO,aAAa,C,CA3CpB,aAAAI,CAAcvH,GACZ,GAAIA,EAAGjG,MAAQ,SAAS,CACtBiG,EAAGwE,kBACHxE,EAAGuE,iBACH3L,KAAKuO,a,EAKT,gBAAAnG,GACE,GAAIpI,KAAKwB,SAAU,OAEnB,GAAIxB,KAAKkH,KAAM,CACblH,KAAK8B,GAAG0F,iBAAiB,YAAaxH,KAAKwO,kBAC3CjH,SAAS7D,KAAK8D,iBAAiB,QAASxH,KAAK8C,Y,KACxC,CACL9C,KAAKyH,iB,EA8BT,MAAAzG,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAM,mBACN6E,KAAMjG,KAAKiG,KACXwC,KAAK,OACLC,UAAW,GAEXzH,EAAA,UAAAE,IAAA,2CAAQC,MAAO,CAAEwN,IAAK,KAAM1H,KAAMlH,KAAKkH,MAAQ7E,QAASrC,KAAKyO,aAAcjN,SAAUxB,KAAKwB,UACxFP,EAAA,OAAAE,IAAA,2CAAK0H,MAAM,6BAA6BO,MAAM,MAAMC,OAAO,MAAMP,QAAQ,eACvE7H,EAAA,QAAAE,IAAA,2CACE6H,EAAE,qIAGR/H,EAAA,OAAAE,IAAA,2CAAKC,MAAO,CAACyN,KAAM,KAAM3H,KAAMlH,KAAKkH,KAAM,CAAC,YAAYlH,KAAKsO,YAAa,OACvErN,EAAA,QAAAE,IAAA,8C,CAMR,gBAAAoE,GACEvF,KAAKoI,kB,CAGP,oBAAAmB,GACEvJ,KAAKyH,iB,6FCrFT,IAAYqH,IAAZ,SAAYA,GACVA,EAAA,cACAA,EAAA,kBACD,EAHD,CAAYA,QAAmB,KCL/B,MAAMC,GAAwB,y1BAC9B,MAAAC,GAAeD,G,MCOFE,GAAkB,MAL/B,WAAAnP,CAAAC,G,+CAM2BC,KAAAwB,SAAoB,MAErCxB,KAAA6C,QAA+BiM,GAAoBI,O,CAI3D,WAAApM,CAAYnB,GACV,GAAI3B,KAAKwB,SAAU,OAEnBxB,KAAKmP,UAAUtO,KAAK,CAAEc,QAAOpB,MAAOP,KAAKO,O,CAG3C,MAAAS,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAM,wBACNqH,KAAK,WACLjH,SAAUxB,KAAKwB,UAEfP,EAAA,QAAAE,IAAA,6C,eC5BR,IAAYiO,IAAZ,SAAYA,GACVA,EAAA,cACAA,EAAA,0BACD,EAHD,CAAYA,QAAiB,KAK7B,IAAYC,IAAZ,SAAYA,GACVA,EAAA,eACAA,EAAA,4BACAA,EAAA,4BACD,EAJD,CAAYA,QAAoB,KCLhC,MAAMC,GAAyB,k8BAC/B,MAAAC,GAAeD,G,MCSFE,GAAmB,MALhC,WAAA1P,CAAAC,G,UAW2BC,KAAAyP,SAAmB,EAMpCzP,KAAA6C,QAA6BuM,GAAkBF,QAM/ClP,KAAAiG,KAAiBL,EAASM,E,CAIlC,gBAAAwJ,GACE,MAAMC,EAAQ3P,KAAK8B,GAAG8N,SACtB,MAAMC,EAAa7P,KAAK8B,GAAGgO,kBAC3B,MAAMC,EAAkB,IAAMF,EAE9B,IAAKF,EAAM9I,SAAWgJ,EAAY,OAElC/H,EAAQ6H,GAAO,CAACK,EAAMC,K,MACpB,MAAMC,EAAoBD,EAAQF,EAClC,IAAII,EACJ,MAAMC,EAAgBC,KAAKC,IACzBD,KAAKE,KAAKvQ,KAAKyP,SAAWS,GAAqBH,EAAiB,GAAI,GAClE,IAEJ,GAAIK,GAAiB,IAAK,CACxBD,EAASd,GAAqBmB,I,MACzB,GAAIJ,EAAgB,EAAG,CAC5BD,EAASd,GAAqBoB,W,KACzB,CACLN,EAASd,GAAqBqB,U,CAI/BV,EAAqBW,aAAa,SAAUR,GAG7C,MAAMS,GAAO/O,EAACmO,IAAoB,MAApBA,SAAI,SAAJA,EAAsBjD,cAAU,MAAAlL,SAAA,SAAAA,EAAE+I,cAAc,SAC9D,GAAIgG,EAAMA,EAAK1F,MAAM9B,MAAQ,GAAGgH,IAAgB,G,CAKpD,gBAAA7K,GACEvF,KAAK0P,kB,CAGP,MAAA1O,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAAC0B,QAAS7C,KAAK6C,QAASoD,KAAMjG,KAAKiG,KAAM7E,MAAO,CAAE,wBAAyB,OAC9EH,EAAA,QAAAE,IAAA,6C,mGCvER,MAAM0P,GAA6B,wxEACnC,MAAAC,GAAeD,G,MCOFE,GAAuB,MALpC,WAAAjR,CAAAC,G,UAO4BC,KAAAmQ,OAA+Bd,GAAqBqB,U,CAE9E,MAAA1P,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHgP,OAAQnQ,KAAKmQ,OACb/O,MAAO,CAAC,6BAA8B,OAEtCH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,SACZH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,QACVH,EAAA,OAAAE,IAAA,2CAAK0H,MAAM,6BAA6BC,QAAQ,eAC1C7H,EAAA,QAAAE,IAAA,2CACE4H,KAAK,eACLC,EAAE,2LAIZ/H,EAAA,KAAAE,IAAA,2CAAGC,MAAM,SAAQH,EAAA,QAAAE,IAAA,8C,uCC3BzB,MAAM6P,GAAW,uBACjB,MAAAC,GAAeD,G,MCMFE,GAAK,MALlB,WAAApR,CAAAC,G,UAO2BC,KAAAwB,SAAoB,K,CAE7C,MAAAR,GACE,OAAOC,EAACC,EAAI,CAAAC,IAAA,2CAACK,SAAUxB,KAAKwB,UAAUP,EAAA,QAAAE,IAAA,6C,eCZ1C,MAAMgQ,GAAa,w1EACnB,MAAAC,GAAeD,G,MCQFE,GAAO,MALpB,WAAAvR,CAAAC,G,UAUWC,KAAAmG,SAAsC,IAAIE,IAC1CrG,KAAAsR,cAAwB,C,CAGjC,eAAAC,EAAgBtP,OAAEA,IAChB,GAAIA,EAAOwB,QAAUxB,EAAOuP,WAAY,OACxC,GAAIvP,EAAO8B,QAAS,CAClB/D,KAAKmG,SAASgC,IAAIlG,EAAOiB,KAAMjB,E,KAC1B,CACLjC,KAAKmG,SAAS1F,OAAOwB,EAAOiB,K,CAG9BlD,KAAKsR,cAAgBtR,KAAKmG,SAASF,I,CAG7B,mBAAAwL,G,MACN,IAAKzR,KAAK0R,aAAa7P,EAAA7B,KAAK0R,YAAQ,MAAA7P,SAAA,SAAAA,EAAEgF,QAAQ,OAE9C7G,KAAK8B,GAAGoJ,MAAMyG,YACZ,2BACA3R,KAAK0R,SACF5K,KAAKC,IACJ,IAAKA,EAAG,MAAO,iBACf,GAAIA,IAAM,OAAQ,MAAO,kBACzB,MAAO,QAAQA,OAAO,GAAK/G,KAAK0R,SAAS7K,WAAW,IAErD8B,KAAK,KAAO,oC,CAInB,MAAA3H,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAO,CAAEwQ,eAAgB5R,KAAKsR,gBAClCrQ,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,WACNlD,KAAK8B,GAAGuL,OAASpM,EAAA,MAAAE,IAAA,2CAAIC,MAAM,kBAAkBpB,KAAK8B,GAAGuL,QAG1DpM,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,YAEXjC,EAAA,OAAAE,IAAA,2CAAKC,MAAM,YACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,iBACTH,EAAC4Q,EAAQ,CAAA1Q,IAAA,4CACPF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,yBACTH,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,WAEbjC,EAAA,KAAAE,IAAA,2CAAGC,MAAM,yBACJpB,KAAKsR,eAAiB,GAAGtR,KAAKsR,iBAAiBtR,KAAKsR,gBAAkB,EAAI,sBAAwB,6BAK3GrQ,EAAA,QAAAE,IAAA,6CAEAF,EAAA,QAAAE,IAAA,2CAAM+B,KAAK,Y,CAMnB,iBAAAnC,GACEf,KAAKyR,qB,uCCjET,IAAYK,IAAZ,SAAYA,GACVA,EAAA,aACAA,EAAA,eACAA,EAAA,cACD,EAJD,CAAYA,QAAW,KAMhB,MAAMC,GAAoB,aAC1B,MAAMC,GAAe,cChB5B,MAAMC,GAAiB,61CACvB,MAAAC,GAAeD,G,MCQFE,GAAW,M,gEAStB,UAAAC,GACE,GAAIpS,KAAKqS,OAASC,UAAW,OAC7B,IAAID,EAAyBrS,KAAKqS,KAClC,GAAIrS,KAAKqS,OAAS,GAAIA,EAAOP,GAAYS,KAEzCvS,KAAKqS,KAAOA,IAASP,GAAYS,KAC/BT,GAAYU,IAAMH,IAASP,GAAYU,IACrCV,GAAYW,KAAOX,GAAYS,KAEnCzK,EAAQ9H,KAAK8B,GAAG4Q,cAAc9C,UAAW+C,IACvC,GAAIA,IAAS3S,KAAK8B,IAAM6Q,EAAKC,aAAa,QAAS,CACjDD,EAAKhC,aAAa,OAAQ,O,KAI9B,IAAK3Q,KAAKkD,KAAMlD,KAAKkD,KAAO/C,IAC5BH,KAAK6S,WAAWhS,KAAK,CAAEqC,KAAMlD,KAAKkD,KAAM3C,MAAOP,KAAKqS,M,CAGtD,MAAArR,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAAC+J,MAAO,CAAE9B,MAAOpJ,KAAKoJ,QACzBnI,EAAA,QAAAE,IAAA,6C,uCCxCR,MAAM2R,GAAmB,ymCACzB,MAAAC,GAAeD,G,MCQFE,GAAa,MAL1B,WAAAlT,CAAAC,G,UAO0CC,KAAAkH,KAAgB,MAC/BlH,KAAAwB,SAAoB,MAErCxB,KAAAiT,aAAe,KACrBjT,KAAKkH,MAAQlH,KAAKkH,IAAI,C,CAGxB,MAAAlG,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,UAAAE,IAAA,2CACEC,MAAO,CAAE,aAAc,KAAM8F,KAAMlH,KAAKkH,MACxC1F,SAAUxB,KAAKwB,SACfa,QAASrC,KAAKiT,eAEhBhS,EAAA,QAAAE,IAAA,2CAAM+B,KAAM6O,KAEZ9Q,EAAA,OAAAE,IAAA,2CAAKC,MAAO,CAAE8R,kBAAmB,KAAMhM,KAAMlH,KAAKkH,OAAQjG,EAAA,QAAAE,IAAA,8C,CAKhE,gBAAAoE,GACE2C,EAAQlI,KAAK8B,GAAG4Q,cAAeX,GAAmB,K,uCClCtD,MAAMoB,GAAgB,mtBACtB,MAAAC,GAAeD,G,MCQFE,GAAU,MALvB,WAAAvT,CAAAC,G,+CAiCUC,KAAAsT,YAAc,EAAGrR,OAAQ8B,MAC/B/D,KAAK+D,QAAUA,EACf,IAAKA,GAAW/D,KAAKmE,QAASnE,KAAKmE,QAAUJ,CAAO,C,CAdtD,mBAAAwP,GACE,IAAKvT,KAAKkD,KAAMlD,KAAKkD,KAAO/C,IAC5BH,KAAKwT,UAAU3S,KAAK,CAClBqC,KAAMlD,KAAKkD,KACX3C,MAAOP,KAAKO,MACZwD,QAAS/D,KAAK+D,QACdI,QAASnE,KAAKmE,QACdV,OAAQzD,KAAKyD,OACb+N,WAAYxR,KAAK8B,GAAGE,aAAa,UAAY+P,I,CASzC,eAAA0B,GACN,GAAIzT,KAAK6C,UAAY7C,KAAK0T,MAAO,CAC/B,MAAMC,EAAU3T,KAAK8B,GAAGC,QAAQiQ,IAChC,IAAKhS,KAAK0T,MAAO,CACf1T,KAAK0T,MAAQC,EAAQf,aAAa,Q,CAEpC,GAAI5S,KAAK6C,QAAS,CAChBqF,EAAQlI,KAAK8B,GAAGC,QAAQiQ,IAAe,WAAWhS,KAAK6C,YAAa7C,KAAK6C,Q,GAK/E,MAAA7B,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACFnB,KAAK6C,UAAYyP,WAChBrR,EAAA,oBAAAE,IAAA,2CAAkBC,MAAM,gBACrBpB,KAAK6C,UAAY,YAChB5B,EAAA,kBAAAE,IAAA,2CACE+B,KAAMlD,KAAKkD,KACXiB,QAASnE,KAAKmE,QACdJ,QAAS/D,KAAK+D,SAAW/D,KAAKmE,QAC9B3C,SAAUxB,KAAKwB,SACf0C,SAAUlE,KAAKkE,SACfD,SAAUjE,KAAKiE,SACf2P,cAAe5T,KAAKsT,cAGvBtT,KAAK6C,UAAY,SAChB5B,EAAA,SAAAE,IAAA,2CACEyB,KAAK,QACLM,KAAMlD,KAAKkD,KACXa,QAAS/D,KAAK+D,SAAW/D,KAAKmE,QAC9B3C,SAAUxB,KAAKwB,SACf0C,SAAUlE,KAAKkE,SACfD,SAAUjE,KAAKiE,YAMvBhD,EAAA,QAAAE,IAAA,6C,CAKN,iBAAAJ,GACEf,KAAKyT,iB,qGCzFT,IAAYI,IAAZ,SAAYA,GACVA,EAAA,qBACAA,EAAA,kBACD,EAHD,CAAYA,QAAQ,KAKpB,IAAYC,IAAZ,SAAYA,GACVA,EAAA,aAED,EAHD,CAAYA,QAAY,KCLxB,MAAMC,GAAY,i2DAClB,MAAAC,GAAeD,G,MCOFE,GAAM,MALnB,WAAAnU,CAAAC,G,+CAU0CC,KAAAkU,OAAiB,EAIjDlU,KAAA6C,QAAwBiR,GAAa5E,QAQpClP,KAAAmU,YAA6B,GAE9BnU,KAAAoU,YAAc,KACpB,IAAKpU,KAAKmU,YAAYtN,OAAQ,CAC5B7G,KAAKmU,YAAc1N,MAAMC,KAAK1G,KAAK8B,GAAG8E,iBAAiBiN,GAASQ,K,GAI5D,gBAAAC,GACNtU,KAAKmU,YAAYrM,SAAQ,CAACyM,EAAKC,KAC7BD,EAAIE,UAAUvS,OAAO,SAAUsS,IAAMxU,KAAKkU,OAAO,G,CAI7C,cAAAQ,CAAezE,GACrB,GAAIA,IAAUjQ,KAAKkU,OAAQ,OAE3BlU,KAAKkU,OAASjE,EACdjQ,KAAK2U,UAAU9T,KAAKb,KAAKkU,O,CAG3B,MAAAlT,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAM,UAAUyB,QAAS7C,KAAK6C,SAClC5B,EAAA,OAAAE,IAAA,2CAAKC,MAAM,cAAcqH,KAAK,WAC3BzI,KAAKmU,YAAYrN,KAAI,CAACyN,EAAKtE,IAC1BhP,EAAA,UACEwH,KAAK,MACLjH,WAAY+S,EAAIvS,aAAa,gBAAkBuS,IAAW,MAAXA,SAAG,SAAHA,EAAa/S,UAC5DJ,MAAO,CAAE8S,OAAQjE,IAAUjQ,KAAKkU,QAChC7R,QAAS,IAAMrC,KAAK0U,eAAezE,IAElCsE,EAAIvS,aAAa,UAAY,OAAOiO,EAAQ,QAKnDhP,EAAA,OAAAE,IAAA,2CACEC,MAAM,sBACNqH,KAAK,WACLC,UAAW,GAEXzH,EAAA,QAAAE,IAAA,2CAAMgM,aAAcnN,KAAKoU,e,CAMjC,iBAAArT,G,CAIA,kBAAA6T,GACE5U,KAAKsU,kB,uCC9ET,MAAMO,GAAW,4gDACjB,MAAAC,GAAeD,G,MCMFE,GAAK,MALlB,WAAAjV,CAAAC,G,iDAMUC,KAAAiG,KAA2B,KAC3BjG,KAAAgV,MAAgB,GAChBhV,KAAAiV,GAAa,GACbjV,KAAAwB,SAAoB,MACpBxB,KAAAkV,UAAqB,K,CAG7B,YAAAC,CAAapS,GACX,GAAI/C,KAAKwB,SAAU,OAEnBxB,KAAKoV,WAAWvU,KAAKkC,E,CAGvB,MAAA/B,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACH+J,MAAO,CAAE8J,MAAOhV,KAAKgV,MAAOK,WAAYrV,KAAKiV,IAC7C7T,MAAO,UAAUpB,KAAKwB,SAAW,WAAa,MAAMxB,KAAKiG,QAEzDhF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,kBACTH,EAAA,QAAAE,IAAA,8CAEDnB,KAAKkV,WACJjU,EAAA,UAAAE,IAAA,2CAAQkB,QAASrC,KAAKmV,aAAa7S,KAAKtC,MAAOoB,MAAM,iB,eC/B/D,IAAYkU,IAAZ,SAAYA,GACVA,EAAA,iBACAA,EAAA,qBACAA,EAAA,SACD,EAJD,CAAYA,QAAe,KCA3B,MAAMC,GAAiB,m3EACvB,MAAAC,GAAeD,G,MCcFE,GAAW,MANxB,WAAA3V,CAAAC,G,0KAU2BC,KAAAsJ,OAAiB,GAEjBtJ,KAAAiG,KAAiBL,EAASM,GAC1BlG,KAAAmQ,OAA0BmF,GAAgBI,IAC3B1V,KAAAO,MAAgB,GAC/BP,KAAAwB,SAAoB,MACpBxB,KAAAiE,SAAoB,MAIrCjE,KAAA2V,YAAe5S,IACrB,MAAMuB,EAASvB,EAAEuB,OACjBtE,KAAKO,MAAQ+D,EAAO/D,MACpBP,KAAK8E,UAAUG,aAAaX,EAAO/D,MAAM,EA+BnCP,KAAA4V,eAAkBzF,IACxB,OAAQA,GACN,KAAKmF,GAAgBtH,MAAO,CAC1B,OACE/M,EAAA,OAAKG,MAAM,qBAAqByH,MAAM,6BAA6BC,QAAQ,eACzE7H,EAAA,QAAM8H,KAAK,eACLC,EAAE,mM,CAId,KAAKsM,GAAgBpH,QACnB,OACEjN,EAAA,OAAKG,MAAM,uBAAuByH,MAAM,6BAA6BC,QAAQ,eAC3E7H,EAAA,QAAM8H,KAAK,eACLC,EAAE,6TAGd,QAAS,OAAO,K,EA7CpB,MAAAhI,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAAC+B,KAAMlD,KAAKkD,KAAM9B,MAAM,gBAAgBqH,KAAK,UAAUC,SAAU1I,KAAKwB,UAAY,EAAI,OACxFxB,KAAKuC,OAAStB,EAAA,SAAAE,IAAA,2CAAOC,MAAM,SAASpB,KAAKuC,OAE1CtB,EAAA,OAAAE,IAAA,2CAAKC,MAAM,WACTH,EAAA,SAAAE,IAAA,2CACEyB,KAAK,OACLxB,MAAO,CAAEyU,SAAU7V,KAAKmQ,SAAWmF,GAAgBI,KACnDzR,SAAUjE,KAAKiE,SACf1D,MAAOP,KAAKO,MACZiB,SAAUxB,KAAKwB,SACf6C,QAASrE,KAAK2V,YACd/M,YAAa5I,KAAK4I,cAGnB5I,KAAK4V,eAAe5V,KAAKmQ,SAG3BnQ,KAAKsJ,QAAUrI,EAAA,KAAAE,IAAA,2CAAGC,MAAM,UAAUpB,KAAKsJ,Q,CAK9C,iBAAAvI,GACEf,KAAK8E,UAAUG,aAAajF,KAAKO,M,+EC5DrC,MAAMuV,GAAe,y+EACrB,MAAAC,GAAeD,G,MCMFE,GAAS,MALtB,WAAAlW,CAAAC,G,UAaUC,KAAAsO,SAA4G,K,CAEpH,MAAAtN,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAAC8U,QAASjW,KAAKkW,QAAS9U,MAAO,cAAcpB,KAAKsO,YACrDrN,EAAA,QAAAE,IAAA,4CACEF,EAAA,OAAAE,IAAA,2CAAK0H,MAAM,6BAA6BC,QAAQ,cAAcM,MAAO,GAAIC,OAAQ,IAC/EpI,EAAA,QAAAE,IAAA,2CACE4H,KAAK,eACLC,EAAE,8T","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function r(r,n,t){return(r||"")+(n?` ${n}`:"")+(t?` ${t}`:"")}function n(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(r=>(+r^crypto.getRandomValues(new Uint8Array(1))[0]&15>>+r/4).toString(16)))}const t=(r,n,t)=>Array.prototype.forEach.call(r,n,t);const e=(r,n,t)=>{if(typeof t==="string"){!r.hasAttribute(n)&&r.setAttribute(n,t);return r}if(t){!r.hasAttribute(n)&&r.setAttribute(n,"")}else{r.hasAttribute(n)&&r.removeAttribute(n)}return r};export{t as a,r as f,e as s,n as u};
|
|
2
|
+
//# sourceMappingURL=p-f98a1845.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["format","first","middle","last","uidGenerator","replace","c","crypto","getRandomValues","Uint8Array","toString","forEach","a","predicate","thisObject","Array","prototype","call","setAttr","node","name","value","hasAttribute","setAttribute","removeAttribute"],"sources":["src/utils/utils.ts"],"sourcesContent":["export function format(first?: string, middle?: string, last?: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\nexport function uidGenerator() {\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, c =>\n (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16)\n );\n}\n\n/**\n * Walks through the given DOM collection and runs the given callback.\n * @param a A DOM collection.\n * @param predicate The callback function.\n * @param [thisObject] The context object for the given callback function.\n */\nexport const forEach = (\n a: NodeListOf<Node> | HTMLCollectionOf<Element>,\n predicate: (search: Element, index?: number) => void,\n thisObject?: any\n) => Array.prototype.forEach.call(a, predicate, thisObject);\n\n/**\n * Debounce the current function for some delay.\n * @param func The delayed function.\n * @param [delay = 500] The time to function delay call.\n */\nexport const debounce = (func: Function, delay: number = 500) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n return function (...args: any[]) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n func.apply(this, args);\n }, delay);\n };\n};\n\nexport const checkTag = <T extends Element, G = T>(element: T, tag: string) => {\n if (element?.tagName !== tag) return undefined;\n return element as unknown as G;\n};\n\nexport const setAttr = (node: Element, name: string, value: string | boolean) => {\n if (typeof value === 'string') {\n !node.hasAttribute(name) && node.setAttribute(name, value);\n return node;\n }\n\n if (value) {\n !node.hasAttribute(name) && node.setAttribute(name, '');\n } else {\n node.hasAttribute(name) && node.removeAttribute(name);\n }\n\n return node;\n};\n"],"mappings":"SAAgBA,EAAOC,EAAgBC,EAAiBC,GACtD,OAAQF,GAAS,KAAOC,EAAS,IAAIA,IAAW,KAAOC,EAAO,IAAIA,IAAS,GAC7E,C,SAEgBC,IACd,MAAO,uCAAuCC,QAAQ,UAAUC,KAC5DA,EAAIC,OAAOC,gBAAgB,IAAIC,WAAW,IAAI,GAAK,KAAOH,EAAI,GAAGI,SAAS,KAEhF,C,MAQaC,EAAU,CACrBC,EACAC,EACAC,IACGC,MAAMC,UAAUL,QAAQM,KAAKL,EAAGC,EAAWC,G,MAsBnCI,EAAU,CAACC,EAAeC,EAAcC,KACnD,UAAWA,IAAU,SAAU,EAC5BF,EAAKG,aAAaF,IAASD,EAAKI,aAAaH,EAAMC,GACpD,OAAOF,C,CAGT,GAAIE,EAAO,EACRF,EAAKG,aAAaF,IAASD,EAAKI,aAAaH,EAAM,G,KAC/C,CACLD,EAAKG,aAAaF,IAASD,EAAKK,gBAAgBJ,E,CAGlD,OAAOD,CAAI,S","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as e,b as a}from"./p-
|
|
1
|
+
import{p as e,b as a}from"./p-612356e6.js";export{s as setNonce}from"./p-612356e6.js";import{g as l}from"./p-e1255160.js";var d=()=>{const a=import.meta.url;const l={};if(a!==""){l.resourcesUrl=new URL(".",a).href}return e(l)};d().then((async e=>{await l();return a([["p-c09a0bfe",[[1,"xv-breadcrumbs-v2"]]],["p-e750290d",[[1,"xv-table-v2-row",{checked:[1540],partial:[1540],name:[1537],value:[520],hover:[1540],readonly:[516],required:[516],disabled:[516],header:[516],variant:[1537]},null,{checked:["checkedChangeHandle"]}],[1,"xv-accordion-v2",{multiple:[4],xvId:[1,"xv-id"],value:[1025],opened:[32],toggleItem:[64]}],[1,"xv-accordion-v2-item",{disabled:[4],label:[1],value:[1],isOpen:[32]},[[16,"accordionChange","handleAccordionChange"]]],[1,"xv-button-v2",{label:[1],block:[4],type:[1],variant:[1],disabled:[4]}],[1,"xv-card-v2",{variant:[1],media:[1],header:[1],body:[1],footer:[1]}],[1,"xv-dropdown-v2",{disabled:[4],multiple:[4],required:[4],open:[1540],error:[1],label:[1],helper:[1],warning:[1],placeholder:[1],size:[1],defaultValue:[8,"default-value"],selected:[32],selectedMap:[32]},[[0,"itemSelected","handleItemSelected"]],{open:["openChangeHandle"]}],[1,"xv-dropdown-v2-item",{disabled:[4],value:[1544],selected:[1540]},[[0,"click","handleClick"]]],[0,"xv-footer",{htmlContent:[32]}],[0,"xv-header",{htmlContent:[32]}],[1,"xv-link-v2",{href:[1],target:[1],disabled:[4],size:[1],variant:[1]}],[1,"xv-loader-v2",{show:[4],variant:[1],size:[1]}],[1,"xv-modal-v2",{open:[1540],permanent:[4],size:[1],openModal:[64],closeModal:[64]}],[1,"xv-notification-v2",{variant:[1],dismissible:[4]}],[1,"xv-overflow-menu-v2",{open:[1540],disabled:[516],position:[1],size:[1]},[[0,"keydown","handleKeyDown"]],{open:["openChangeHandle"]}],[1,"xv-overflow-menu-v2-item",{disabled:[516],value:[520],variant:[1]},[[0,"click","handleClick"]]],[1,"xv-progress-indicator-v2",{progress:[514],variant:[1],size:[1]},null,{progress:["updateChildItems"]}],[1,"xv-progress-indicator-v2-item",{status:[1]}],[1,"xv-tab-v2",{label:[513],disabled:[516]}],[1,"xv-table-v2",{size:[513],hover:[516],colsSize:[16],selected:[32],selectedCount:[32]},[[0,"selectRow","handleSelectRow"]]],[1,"xv-table-v2-expand",{open:[1540],disabled:[516]}],[1,"xv-tabs-v2",{active:[1538],variant:[1],tabElements:[32]}],[1,"xv-tag-v2",{size:[1],color:[1],bg:[1],disabled:[4],closeable:[4]}],[65,"xv-text-input-v2",{label:[513],placeholder:[513],helper:[513],name:[513],size:[513],status:[513],value:[1537],disabled:[516],readonly:[516]}],[1,"xv-tooltip-v2",{message:[1],position:[1]}],[65,"xv-checkbox-v2",{checked:[1540],indeterminate:[516],disabled:[516],name:[513],value:[513],readonly:[516],required:[516],partial:[516],label:[1],size:[513],error:[520],hasFocus:[32]},null,{checked:["onCheckedChange"]}],[1,"xv-table-v2-cell",{width:[513],name:[1537],align:[513],sort:[1537]},[[0,"click","handleSort"]]]]]],e)}));
|
|
2
2
|
//# sourceMappingURL=xv-webcomponents.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["patchBrowser","importMeta","url","opts","resourcesUrl","URL","href","promiseResolve","then","async","options","globalScripts","bootstrapLazy","
|
|
1
|
+
{"version":3,"names":["patchBrowser","importMeta","url","opts","resourcesUrl","URL","href","promiseResolve","then","async","options","globalScripts","bootstrapLazy","checked","partial","name","value","hover","readonly","required","disabled","header","variant","multiple","xvId","opened","toggleItem","label","isOpen","block","type","media","body","footer","open","error","helper","warning","placeholder","size","defaultValue","selected","selectedMap","htmlContent","target","show","permanent","openModal","closeModal","dismissible","position","progress","status","colsSize","selectedCount","active","tabElements","color","bg","closeable","message","indeterminate","hasFocus","width","align","sort"],"sources":["node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.27.1 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":"0HAOA,IAAIA,EAAe,KAUjB,MAAMC,cAAyBC,IAC/B,MAAMC,EAAqE,GAC3E,GAAIF,IAAe,GAAI,CACrBE,EAAKC,aAAe,IAAIC,IAAI,IAAKJ,GAAYK,IACjD,CACE,OAAOC,EAAeJ,EAAK,EClB7BH,IAAeQ,MAAKC,MAAOC,UACnBC,IACN,OAAOC,EAAc,0CAAuC,qCAAAC,QAAA,OAAAC,QAAA,OAAAC,KAAA,OAAAC,MAAA,MAAAC,MAAA,OAAAC,SAAA,MAAAC,SAAA,MAAAC,SAAA,MAAAC,OAAA,MAAAC,QAAA,cAAAT,QAAA,gDAAAU,SAAA,IAAAC,KAAA,YAAAR,MAAA,OAAAS,OAAA,KAAAC,WAAA,kCAAAN,SAAA,IAAAO,MAAA,IAAAX,MAAA,IAAAY,OAAA,2EAAAD,MAAA,IAAAE,MAAA,IAAAC,KAAA,IAAAR,QAAA,IAAAF,SAAA,uBAAAE,QAAA,IAAAS,MAAA,IAAAV,OAAA,IAAAW,KAAA,IAAAC,OAAA,2BAAAb,SAAA,IAAAG,SAAA,IAAAJ,SAAA,IAAAe,KAAA,OAAAC,MAAA,IAAAR,MAAA,IAAAS,OAAA,IAAAC,QAAA,IAAAC,YAAA,IAAAC,KAAA,IAAAC,aAAA,oBAAAC,SAAA,KAAAC,YAAA,iDAAAR,KAAA,iDAAAd,SAAA,IAAAJ,MAAA,OAAAyB,SAAA,qDAAAE,YAAA,uBAAAA,YAAA,wBAAArC,KAAA,IAAAsC,OAAA,IAAAxB,SAAA,IAAAmB,KAAA,IAAAjB,QAAA,yBAAAuB,KAAA,IAAAvB,QAAA,IAAAiB,KAAA,wBAAAL,KAAA,OAAAY,UAAA,IAAAP,KAAA,IAAAQ,UAAA,KAAAC,WAAA,gCAAA1B,QAAA,IAAA2B,YAAA,gCAAAf,KAAA,OAAAd,SAAA,MAAA8B,SAAA,IAAAX,KAAA,sCAAAL,KAAA,sDAAAd,SAAA,MAAAJ,MAAA,MAAAM,QAAA,iEAAA6B,SAAA,MAAA7B,QAAA,IAAAiB,KAAA,WAAAY,SAAA,2DAAAC,OAAA,sBAAAzB,MAAA,MAAAP,SAAA,0BAAAmB,KAAA,MAAAtB,MAAA,MAAAoC,SAAA,KAAAZ,SAAA,KAAAa,cAAA,oEAAApB,KAAA,OAAAd,SAAA,yBAAAmC,OAAA,OAAAjC,QAAA,IAAAkC,YAAA,uBAAAjB,KAAA,IAAAkB,MAAA,IAAAC,GAAA,IAAAtC,SAAA,IAAAuC,UAAA,8BAAAhC,MAAA,MAAAW,YAAA,MAAAF,OAAA,MAAArB,KAAA,MAAAwB,KAAA,MAAAa,OAAA,MAAApC,MAAA,OAAAI,SAAA,MAAAF,SAAA,4BAAA0C,QAAA,IAAAV,SAAA,4BAAArC,QAAA,OAAAgD,cAAA,MAAAzC,SAAA,MAAAL,KAAA,MAAAC,MAAA,MAAAE,SAAA,MAAAC,SAAA,MAAAL,QAAA,MAAAa,MAAA,IAAAY,KAAA,MAAAJ,MAAA,MAAA2B,SAAA,YAAAjD,QAAA,6CAAAkD,MAAA,MAAAhD,KAAA,OAAAiD,MAAA,MAAAC,KAAA,uCAAAvD,EAAA","ignoreList":[]}
|