xv-webcomponents 0.1.46 → 0.1.50

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.
Files changed (90) hide show
  1. package/dist/cjs/{index-MLh9SbX2.js → index-CjhPTfz8.js} +41 -14
  2. package/dist/cjs/index-CjhPTfz8.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +3 -4
  4. package/dist/cjs/loader.cjs.js.map +1 -1
  5. package/dist/cjs/xv-accordion-v2_38.cjs.entry.js +79193 -0
  6. package/dist/cjs/xv-accordion-v2_38.cjs.entry.js.map +1 -0
  7. package/dist/cjs/xv-breadcrumbs-v2.cjs.entry.js +1 -1
  8. package/dist/cjs/xv-webcomponents.cjs.js +4 -5
  9. package/dist/cjs/xv-webcomponents.cjs.js.map +1 -1
  10. package/dist/collection/collection-manifest.json +5 -1
  11. package/dist/collection/components/xv-datepicker/xv-datepicker.css +401 -0
  12. package/dist/collection/components/xv-datepicker/xv-datepicker.js +570 -0
  13. package/dist/collection/components/xv-datepicker/xv-datepicker.js.map +1 -0
  14. package/dist/collection/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.js +1 -1
  15. package/dist/collection/components/xv-dropdown/xv-dropdown.js +2 -2
  16. package/dist/collection/components/xv-dropdown/xv-dropdown.js.map +1 -1
  17. package/dist/collection/components/xv-file-uploader/xv-file-uploader.js +2 -2
  18. package/dist/collection/components/xv-footer/xv-footer.js +1 -1
  19. package/dist/collection/components/xv-header/xv-header.css +109 -0
  20. package/dist/collection/components/xv-header/xv-header.js +131 -3
  21. package/dist/collection/components/xv-header/xv-header.js.map +1 -1
  22. package/dist/collection/components/xv-link/xv-link.js +1 -1
  23. package/dist/collection/components/xv-modal/xv-modal.js +1 -1
  24. package/dist/collection/components/xv-notification/xv-notification.css +1 -1
  25. package/dist/collection/components/xv-notification/xv-notification.js +1 -1
  26. package/dist/collection/components/xv-number-input/xv-number-input.js +2 -2
  27. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu-item/xv-overflow-menu-item.js +1 -1
  28. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu.js +1 -1
  29. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.js +1 -1
  30. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.js +1 -1
  31. package/dist/collection/components/xv-slider/xv-slider.css +196 -0
  32. package/dist/collection/components/xv-slider/xv-slider.js +259 -0
  33. package/dist/collection/components/xv-slider/xv-slider.js.map +1 -0
  34. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.js +1 -1
  35. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.js +1 -1
  36. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.js +1 -1
  37. package/dist/collection/components/xv-table/xv-table.js +1 -1
  38. package/dist/collection/components/xv-tabs/xv-tab/xv-tab.js +1 -1
  39. package/dist/collection/components/xv-tag/xv-tag.js +1 -1
  40. package/dist/collection/components/xv-text-input/xv-text-input.js +2 -2
  41. package/dist/collection/components/xv-textarea/xv-textarea.css +254 -0
  42. package/dist/collection/components/xv-textarea/xv-textarea.js +411 -0
  43. package/dist/collection/components/xv-textarea/xv-textarea.js.map +1 -0
  44. package/dist/collection/components/xv-tile/xv-tile.css +294 -0
  45. package/dist/collection/components/xv-tile/xv-tile.js +264 -0
  46. package/dist/collection/components/xv-tile/xv-tile.js.map +1 -0
  47. package/dist/collection/components/xv-toggle-tip/xv-toggle-tip.js +1 -1
  48. package/dist/collection/components/xv-tooltip/xv-tooltip.js +2 -2
  49. package/dist/esm/{index-DLYJiP99.js → index-BQoQLd_U.js} +41 -15
  50. package/dist/esm/index-BQoQLd_U.js.map +1 -0
  51. package/dist/esm/loader.js +3 -4
  52. package/dist/esm/loader.js.map +1 -1
  53. package/dist/esm/xv-accordion-v2_38.entry.js +79154 -0
  54. package/dist/esm/xv-accordion-v2_38.entry.js.map +1 -0
  55. package/dist/esm/xv-breadcrumbs-v2.entry.js +1 -1
  56. package/dist/esm/xv-webcomponents.js +4 -5
  57. package/dist/esm/xv-webcomponents.js.map +1 -1
  58. package/dist/types/components/xv-datepicker/xv-datepicker.d.ts +69 -0
  59. package/dist/types/components/xv-header/xv-header.d.ts +30 -0
  60. package/dist/types/components/xv-slider/xv-slider.d.ts +20 -0
  61. package/dist/types/components/xv-textarea/xv-textarea.d.ts +27 -0
  62. package/dist/types/components/xv-tile/xv-tile.d.ts +24 -0
  63. package/dist/types/components.d.ts +344 -0
  64. package/dist/types/stencil-public-runtime.d.ts +1 -1
  65. package/dist/xv-webcomponents/loader.esm.js.map +1 -1
  66. package/dist/xv-webcomponents/p-BQoQLd_U.js +3 -0
  67. package/dist/xv-webcomponents/p-BQoQLd_U.js.map +1 -0
  68. package/dist/xv-webcomponents/{p-851c4716.entry.js → p-a8d785da.entry.js} +2 -2
  69. package/dist/xv-webcomponents/p-f00c82ed.entry.js +2 -0
  70. package/dist/xv-webcomponents/p-f00c82ed.entry.js.map +1 -0
  71. package/dist/xv-webcomponents/xv-webcomponents.esm.js +1 -1
  72. package/dist/xv-webcomponents/xv-webcomponents.esm.js.map +1 -1
  73. package/package.json +7 -4
  74. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
  75. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
  76. package/dist/cjs/index-MLh9SbX2.js.map +0 -1
  77. package/dist/cjs/xv-accordion-v2_34.cjs.entry.js +0 -3542
  78. package/dist/cjs/xv-accordion-v2_34.cjs.entry.js.map +0 -1
  79. package/dist/esm/app-globals-DQuL1Twl.js +0 -6
  80. package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
  81. package/dist/esm/index-DLYJiP99.js.map +0 -1
  82. package/dist/esm/xv-accordion-v2_34.entry.js +0 -3507
  83. package/dist/esm/xv-accordion-v2_34.entry.js.map +0 -1
  84. package/dist/xv-webcomponents/p-DLYJiP99.js +0 -3
  85. package/dist/xv-webcomponents/p-DLYJiP99.js.map +0 -1
  86. package/dist/xv-webcomponents/p-DQuL1Twl.js +0 -2
  87. package/dist/xv-webcomponents/p-DQuL1Twl.js.map +0 -1
  88. package/dist/xv-webcomponents/p-d96c1b6a.entry.js +0 -2
  89. package/dist/xv-webcomponents/p-d96c1b6a.entry.js.map +0 -1
  90. /package/dist/xv-webcomponents/{p-851c4716.entry.js.map → p-a8d785da.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["xvAccordionCss","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","XvAccordionItem","disabled","isOpen","handleAccordionChange","event","parentAccordionId","_a","el","closest","getAttribute","detail","toggle","_b","call","onClick","bind","label","SIZE_VAR","XV_SORT_DIR","xvButtonV2Css","XvButton","variant","size","MD","loading","block","type","hasLeftIcon","hasRightIcon","hasContent","handleSlotChangeLeft","target","assignedElements","length","handleSlotChangeContent","assignedNodes","some","node","nodeType","Node","ELEMENT_NODE","TEXT_NODE","textContent","trim","handleSlotChangeRight","handleClick","internals","form","requestSubmit","reset","part","undefined","ariaLabel","XL","LG","name","onSlotchange","xvCardCss","XvCard","media","src","alt","header","body","footer","xvCheckboxCss","XvCheckbox","checked","indeterminate","readonly","required","partial","hasFocus","onInput","e","inputEvent","onChange","changeEvent","onFocus","focusEvent","onBlur","blurEvent","attachInternals","connectedCallback","setFormValue","onCheckedChange","newValue","ref","inputEl","error","componentDidLoad","componentDidUpdate","formResetCallback","formStateRestoreCallback","state","xvDataTableCss","XvDataTable","columnWidths","hover","role","map","width","style","xvDataTableCellCss","XvDataTableCell","handleSort","sort","NONE","DESC","ASC","forEach","parentElement","children","cell","hasAttribute","setAttribute","sortChange","multiline","align","isNaN","__renderWithTooltip","tooltip","dashed","position","message","XV_DATA_TABLE_TAG","XV_DATA_TABLE_ROW_TAG","xvDataTableCollapseCss","XvDataTableCollapse","collapsed","setCollapsed","collapsedChange","table","rows","querySelectorAll","row","className","expanded","xvDataTableRowCss","XvDataTableRow","collapseClick","async","collapse","collapseEl","setInitialState","querySelector","checkedChangeHandle","check","slot","expandable","collapsable","open","onEventChange","DropdownItemSelector","xvDropdownCss","XvDropdown","selected","selectedMap","Map","setSelected","optionNodes","values","Array","from","options","v","text","handleOpen","handleClickOutside","ev","contains","addListeners","document","addEventListener","removeListeners","removeEventListener","setDefaultValues","defaultValue","setTimeout","option","dropdownItemData","innerText","setAttr","set","openChangeHandle","handleItemSelected","hasItem","optionElements","changeSelection","tabindex","info","join","placeholder","renderIcon","focusable","preserveAspectRatio","xmlns","fill","height","viewBox","d","helper","warning","disconnectedCallback","XS","xvDropdownItemCss","XvDropdownItem","itemSelected","XvFileUploaderVariants","xvFileUploaderCss","XvFileUploader","BUTTON","accept","buttonVariant","maxFileSizeMB","maxFiles","files","loadingStates","errors","dragActive","errorMessages","onFileSelect","input","selectedFiles","handleFiles","onDrop","preventDefault","droppedFiles","dataTransfer","validation","filesChange","onDragOver","onDragLeave","clearFiles","fileInput","maxSize","seenFileNames","uniqueFiles","file","push","dotIndex","lastIndexOf","extension","substring","toLowerCase","isAccepted","removeFile","index","fileRemoved","slice","description","click","addText","active","hidden","withError","_renderLoaderState","_renderError","errorIcon","_c","Fragment","primary","secondary","xvFooterCss","Xvfooter","htmlContent","response","fetch","console","innerHTML","xvHeaderCss","XvHeader","showLoginModal","openLoginModal","closeLoginModal","parser","DOMParser","doc","parseFromString","mixedMenu","allCategoriesGenerals","allCategoriesContainer","appendChild","href","display","visible","onClose","action","method","autocomplete","xvLinkCss","XvLink","preventLinkHandler","stopPropagation","xvLoaderCss","XvLoader","show","spinner","xvLoginModalCss","XvLoginModal","oauthProviders","bookNow","returnUrl","passwordLoginEnabled","oauthLoginEnabled","passwordRegistrationEnabled","configurationName","xvMvcConfigName","contactUrl","handleClose","close","setReturnUrl","readMetaNavCookie","displayName","providerName","icon","buttonClass","params","URLSearchParams","window","location","search","url","get","includes","metaNavCookie","cookie","split","find","startsWith","cookieValue","decodeURIComponent","metaNavObj","JSON","parse","PasswordLoginEnabled","PasswordRegistrationEnabled","ConfigurationName","XvMvcConfigName","ContactUrl","warn","renderPasswordLogin","rel","renderOAuthProviders","provider","maxWidth","title","toString","renderFooter","encodeURIComponent","tabIndex","autoComplete","htmlFor","xvModalCss","XvModal","permanent","overflow","triggerEl","onBackdropClick","currentTarget","closeModal","removeTriggerListener","openModal","setupTrigger","shadowRoot","assigned","openChange","backdrop","modal_content","NOTIFICATION_VARIANTS","xvNotificationCss","XvNotification","INFO","dismissible","closeHandle","cls","ERROR","SUCCESS","WARNING","xvNumberInputCss","XvNumberInput","step","increment","max","setValue","decrement","min","handleInput","num","parseFloat","valueChange","control_input","xvOverflowMenuCss","XvOverflowMenu","handleSelectItem","onOpenToggle","selectItem","handleKeyDown","btn","list","OverflowMenuVariant","xvOverflowMenuItemCss","XvOverflowMenuItem","DEFAULT","itemClick","PROGRESS_VARIANTS","PROGRESS_ITEM_STATUS","xvProgressIndicatorCss","XvProgressIndicator","progress","updateChildItems","items","itemsCount","childElementCount","progressPerItem","item","itemProgressStart","status","localProgress","Math","DONE","IN_PROGRESS","NO_STARTED","line","xvProgressIndicatorItemCss","XvProgressIndicatorItem","xvTabCss","XvTab","xvTableCss","XvTable","selectedCount","handleCheckedChange","setColsSizeTemplate","colsSize","setProperty","batchVisible","xvTableCellCss","XvTableCell","XV_EXPANDABLE_KEY","XV_TABLE_TAG","xvTableExpandCss","XvTableExpand","handleExpand","expandableContent","xvTableRowCss","XvTableRow","checkHandle","selectRow","checkedChange","setInitialAttrs","tableEl","TAB_TAGS","TABS_VATIANT","xvTabsCss","XvTabs","tabElements","showArrows","collectTabs","TAB","tab","updateArrowVisibility","container","scrollWidth","clientWidth","updateTabClasses","i","classList","handleTabClick","activeChange","Number","scrollToActiveTab","scrollIntoView","behavior","inline","setTab","count","currentIdx","findIndex","nextIdx","nextTab","emptyMessage","componentDidRender","xvTagCss","XvTag","color","bg","closeable","closeHandler","closeClick","background","xvTextInputCss","XvTextInput","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","concat","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","nodeName","getWindow","ownerDocument","defaultView","isElement","OwnElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","applyStyles","_ref","Object","keys","elements","styles","attributes","assign","removeAttribute","effect","_ref2","initialStyles","strategy","margin","arrow","styleProperties","hasOwnProperty","property","attribute","applyStyles$1","enabled","phase","fn","requires","getBasePlacement","round","getUAString","uaData","navigator","userAgentData","brands","isArray","brand","version","userAgent","isLayoutViewport","test","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","abs","parent","child","rootNode","getRootNode","next","isSameNode","parentNode","host","getComputedStyle","isTableElement","indexOf","getDocumentElement","documentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","transform","perspective","contain","willChange","filter","getOffsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","padding","rects","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","centerToReference","center","offset","axisProp","centerOffset","_options$element","arrow$1","requiresIfExists","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","devicePixelRatio","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","data","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","eventListeners","hash","getOppositePlacement","replace","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","getViewportRect","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","scrollHeight","direction","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","clientTop","clientLeft","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","a","b","getExpandedFallbackPlacements","oppositePlacement","flip","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","every","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","order","modifiers","visited","result","modifier","dep","depModifier","orderModifiers","orderedModifiers","debounce","pending","Promise","resolve","then","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","arguments","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","createPopper","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","destroy","onFirstUpdate","_ref$options","cleanupFn","noopFn","xvToggleTipCss","XvToggleTip","destroyPopper","popperInstance","requestAnimationFrame","setPopover","popoverEl","popover","xvTooltipCss","XvTooltip","onMouseEnter","createTooltip","onMouseLeave","destroyTooltip","tooltipEl","createElement","removeChild"],"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/types/enum.ts","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/components/xv-data-table/xv-data-table.scss?tag=xv-data-table&encapsulation=shadow","src/components/xv-data-table/xv-data-table.tsx","src/components/xv-data-table/xv-data-table-cell/xv-data-table-cell.scss?tag=xv-data-table-cell&encapsulation=shadow","src/components/xv-data-table/xv-data-table-cell/xv-data-table-cell.tsx","src/components/xv-data-table/_vars.ts","src/components/xv-data-table/xv-data-table-collapse/xv-data-table-collapse.scss?tag=xv-data-table-collapse&encapsulation=shadow","src/components/xv-data-table/xv-data-table-collapse/xv-data-table-collapse.tsx","src/components/xv-data-table/xv-data-table-row/xv-data-table-row.scss?tag=xv-data-table-row&encapsulation=shadow","src/components/xv-data-table/xv-data-table-row/xv-data-table-row.tsx","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-file-uploader/_vars.ts","src/components/xv-file-uploader/xv-file-uploader.scss?tag=xv-file-uploader&encapsulation=shadow","src/components/xv-file-uploader/xv-file-uploader.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-login-modal/xv-login-modal.scss?tag=xv-login-modal&encapsulation=shadow","src/components/xv-login-modal/xv-login-modal.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-number-input/xv-number-input.scss?tag=xv-number-input-v2&encapsulation=shadow","src/components/xv-number-input/xv-number-input.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/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/_vars.ts","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/xv-text-input.scss?tag=xv-text-input-v2&encapsulation=shadow","src/components/xv-text-input/xv-text-input.tsx","node_modules/@popperjs/core/lib/enums.js","node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","node_modules/@popperjs/core/lib/dom-utils/getWindow.js","node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","node_modules/@popperjs/core/lib/modifiers/applyStyles.js","node_modules/@popperjs/core/lib/utils/getBasePlacement.js","node_modules/@popperjs/core/lib/utils/math.js","node_modules/@popperjs/core/lib/utils/userAgent.js","node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","node_modules/@popperjs/core/lib/dom-utils/contains.js","node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","node_modules/@popperjs/core/lib/utils/within.js","node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","node_modules/@popperjs/core/lib/utils/expandToHashMap.js","node_modules/@popperjs/core/lib/modifiers/arrow.js","node_modules/@popperjs/core/lib/utils/getVariation.js","node_modules/@popperjs/core/lib/modifiers/computeStyles.js","node_modules/@popperjs/core/lib/modifiers/eventListeners.js","node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","node_modules/@popperjs/core/lib/utils/rectToClientRect.js","node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","node_modules/@popperjs/core/lib/utils/computeOffsets.js","node_modules/@popperjs/core/lib/utils/detectOverflow.js","node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","node_modules/@popperjs/core/lib/modifiers/flip.js","node_modules/@popperjs/core/lib/modifiers/hide.js","node_modules/@popperjs/core/lib/modifiers/offset.js","node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","node_modules/@popperjs/core/lib/utils/getAltAxis.js","node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","node_modules/@popperjs/core/lib/utils/orderModifiers.js","node_modules/@popperjs/core/lib/utils/debounce.js","node_modules/@popperjs/core/lib/utils/mergeByName.js","node_modules/@popperjs/core/lib/createPopper.js","node_modules/@popperjs/core/lib/popper.js","src/components/xv-toggle-tip/xv-toggle-tip.scss?tag=xv-toggle-tip&encapsulation=shadow","src/components/xv-toggle-tip/xv-toggle-tip.tsx","src/components/xv-tooltip/xv-tooltip.scss?tag=xv-tooltip-v2","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","export enum SIZE_VAR {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n}\n\nexport enum XV_SORT_DIR {\n ASC = 'asc',\n DESC = 'desc',\n NONE = 'none'\n}\n",":host {\n display: inline-block;\n}\n:host([block]) {\n display: block;\n width: 100%;\n}\n\n.xv-button {\n all: unset;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-radius: 3px;\n font-size: var(--fz-md);\n font-family: var(--ff-body, Tahoma);\n font-style: normal;\n font-weight: 700;\n line-height: 128.571%;\n letter-spacing: 0.16px;\n cursor: pointer;\n position: relative;\n transition: background 0.2s, color 0.2s, border-color 0.2s;\n user-select: none;\n width: 100%;\n &:focus-visible {\n outline: 2px solid var(--focus);\n outline-offset: 2px;\n }\n\n // Base sizes\n &--xs {\n --xv-button-icon-size: 16px;\n\n padding: var(--spacing-02);\n height: var(--xv-button-icon-size);\n }\n\n &--sm {\n --xv-button-icon-size: 32px;\n padding: var(--spacing-03);\n height: var(--xv-button-icon-size);\n }\n\n &--md {\n --xv-button-icon-size: 40px;\n padding: var(--spacing-04);\n height: var(--xv-button-icon-size);\n }\n\n &--lg {\n --xv-button-icon-size: 48px;\n padding: var(--spacing-05);\n height: var(--xv-button-icon-size);\n }\n\n &--xl {\n --xv-button-icon-size: 60px;\n\n font-size: 1.1em;\n padding: var(--spacing-06);\n height: auto;\n }\n\n // Variant styles\n &--primary {\n background-color: var(--button-primary);\n color: var(--text-on-color);\n\n &:hover {\n background-color: var(--button-primary-hover);\n }\n\n &:active {\n background-color: var(--button-primary-active);\n }\n }\n\n &--accent {\n background-color: var(--button-accent);\n color: var(--text-on-color);\n\n &:hover {\n background-color: var(--button-accent-hover);\n }\n\n &:active {\n background-color: var(--button-accent-active);\n }\n }\n\n &--secondary {\n background-color: var(--button-secondary);\n border: 1px solid var(--border-subtle-01);\n\n &:hover {\n background-color: var(--button-secondary-hover);\n }\n\n &:active {\n background-color: var(--button-secondary-active);\n }\n }\n\n &--danger {\n background: var(--support-error);\n color: white;\n\n &:hover {\n background-color: #ba1b23;\n }\n\n &:active {\n background-color: #750e13;\n }\n\n &:disabled {\n background-color: var(--button-disabled);\n border-color: transparent;\n color: var(--text-on-color-disabled, #8B8B8B);\n }\n }\n\n &--tertiary {\n background-color: transparent;\n border: 1px solid var(--button-tertiary);\n\n &:hover {\n background-color: var(--button-tertiary-hover);\n }\n\n &:active {\n background-color: var(--button-tertiary-active);\n }\n\n &:disabled {\n color: var(--text-disabled);\n border-color: var(--button-disabled, #D1D1D1);\n background-color: transparent;\n }\n }\n\n &--ghost {\n background-color: transparent;\n color: var(--text-primary);\n\n &:hover {\n background-color: transparent;\n }\n\n &:active {\n background-color: rgba(139, 139, 139, 0.5);\n }\n\n &:disabled {\n color: var(--text-disabled);\n border-color: transparent;\n background-color: transparent;\n }\n }\n\n // Disabled & loading state\n &--primary:disabled,\n &--accent:disabled,\n &--secondary:disabled,\n &--danger:disabled {\n border-color: var(--border-subtle-01, #D1D1D1);\n background-color: var(--button-disabled, #D1D1D1);\n color: var(--text-on-color-disabled, #8B8B8B);\n }\n\n &--disabled {\n cursor: not-allowed;\n }\n\n // Loading state\n &--loading {\n pointer-events: none;\n opacity: 0.8;\n }\n\n // Label\n &__label {\n display: inline-flex;\n align-items: center;\n }\n\n // Loader\n &__loader {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n }\n\n // Icon slots\n &__icon {\n display: inline-flex;\n align-items: center;\n }\n\n &--icon {\n &-left {\n .xv-button__icon--left {\n margin-inline-end: var(--spacing-05);\n }\n }\n\n &-right {\n .xv-button__icon--right {\n margin-inline-start: var(--spacing-05);\n }\n }\n\n // Button with icon only (no label)\n &-only {\n padding: 0;\n width: var(--xv-button-icon-size, 40px);\n height: var(--xv-button-icon-size, 40px);\n justify-content: center;\n\n .xv-button__icon {\n margin: 0;\n }\n }\n }\n}\n\n","import { Component, Prop, h, Element, State, Host, AttachInternals } from '@stencil/core';\r\nimport { SIZE_VAR } from '../../types/enum';\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 formAssociated: true,\r\n})\r\nexport class XvButton {\r\n @Element() el: HTMLElement;\r\n\r\n /** Button label is optional you can use just inside content */\r\n @Prop({ reflect: true }) label?: string;\r\n /** Button variants */\r\n @Prop({ reflect: true }) variant: 'primary' | 'secondary' | 'ghost' | 'danger' | 'tertiary' = 'primary';\r\n /** Button size */\r\n @Prop({ reflect: true }) size: SIZE_VAR = SIZE_VAR.MD;\r\n /** Button disabled state */\r\n @Prop({ reflect: true }) disabled: boolean = false;\r\n /** Button loading state */\r\n @Prop({ reflect: true }) loading: boolean = false;\r\n /** Button for full width */\r\n @Prop({ reflect: true }) block: boolean = false;\r\n /** Button type */\r\n @Prop({ reflect: true }) type: 'button' | 'submit' | 'reset' = 'button';\r\n\r\n @State() hasLeftIcon: boolean = false;\r\n @State() hasRightIcon: boolean = false;\r\n @State() hasContent: boolean = false;\r\n\r\n @AttachInternals() internals: ElementInternals;\r\n\r\n private handleSlotChangeLeft = (event: Event) => {\r\n this.hasLeftIcon = (event.target as HTMLSlotElement).assignedElements().length > 0;\r\n };\r\n\r\n private handleSlotChangeContent = (event: Event) => {\r\n this.hasContent = (event.target as HTMLSlotElement).assignedNodes().some(\r\n node =>\r\n node.nodeType === Node.ELEMENT_NODE ||\r\n (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== ''),\r\n );\r\n };\r\n\r\n private handleSlotChangeRight = (event: Event) => {\r\n this.hasRightIcon = (event.target as HTMLSlotElement).assignedElements().length > 0;\r\n };\r\n\r\n private handleClick = () => {\r\n if (this.type === 'submit') {\r\n this.internals.form?.requestSubmit();\r\n } else if (this.type === 'reset') {\r\n this.internals.form?.reset();\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <button\r\n class={{\r\n 'xv-button': true,\r\n [`xv-button--${this.variant}`]: !!this.variant,\r\n [`xv-button--${this.size}`]: !!this.size,\r\n 'xv-button--disabled': this.disabled || this.loading,\r\n 'xv-button--block': this.block,\r\n 'xv-button--loading': this.loading,\r\n 'xv-button--icon-left': this.hasLeftIcon,\r\n 'xv-button--icon-right': this.hasRightIcon,\r\n 'xv-button--icon-only': !this.hasContent,\r\n }}\r\n part=\"button\"\r\n onClick={this.handleClick}\r\n type={this.type}\r\n disabled={this.disabled || this.loading}\r\n aria-disabled={this.disabled ? 'true' : undefined}\r\n aria-label={this.el?.ariaLabel || 'XV button'}\r\n >\r\n {this.loading && (\r\n <xv-loader-v2 class=\"xv-button__loader\"\r\n size={this.size !== SIZE_VAR.XL ? this.size : SIZE_VAR.LG} />\r\n )}\r\n\r\n <span class=\"xv-button__icon xv-button__icon--left\">\r\n <slot name=\"icon-left\" onSlotchange={this.handleSlotChangeLeft}></slot>\r\n </span>\r\n\r\n <span class=\"xv-button__label\">\r\n <slot onSlotchange={this.handleSlotChangeContent}>\r\n {this.label}\r\n </slot>\r\n </span>\r\n\r\n <span class=\"xv-button__icon xv-button__icon--right\">\r\n <slot name=\"icon-right\" onSlotchange={this.handleSlotChangeRight}></slot>\r\n </span>\r\n </button>\r\n </Host>\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 overflow: visible !important;\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 position: absolute;\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 position: absolute;\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",":host {\n --xv-data-table-min-height: 51.11px;\n --xv-data-table-border-width: 1px;\n --xv-data-table-border-color: var(--border-subtle-01, #D1D1D1);\n --xv-data-table-padding-x: var(--spacing-05, 16px);\n --xv-data-table-padding-y: var(--spacing-05, 16px);\n --xv-data-table-row-bg: transparent;\n\n //display: contents;\n width: inherit;\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: 18px;\n letter-spacing: 0.16px;\n @media screen and (max-width: 1180px) {\n display: block;\n position: relative;\n overflow-x: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--layer-accent-03) transparent;\n ::slotted([slot=\"title\"]),\n &>table {\n min-width: 1180px;\n }\n }\n\n .bar {\n position: sticky;\n left: 0;\n z-index: 10;\n &_batch {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: unset;\n user-select: unset;\n z-index: 2;\n background-color: var(--interactive-01, #273435);\n color: var(--text-on-color, #fff);\n border-radius: 3px 3px 0 0;\n display: flex;\n align-items: center;\n }\n\n &_toolbar {\n z-index: 1;\n border-radius: 3px 3px 0 0;\n }\n }\n\n ::slotted([slot=\"title\"]) {\n margin: 0!important;\n color: var(--text-primary, #333)!important;\n font-family: var(--ff-heading, \"Gill Sans\")!important;\n font-size: var(--fz-xl, 21px)!important;\n text-align: left;\n font-style: normal!important;\n font-weight: 400!important;\n line-height: normal!important;\n padding: var(--spacing-05) var(--spacing-05) var(--spacing-06) !important;\n }\n\n ::slotted([slot=\"toolbar\"]) {\n margin-bottom: var(--spacing-03);\n }\n\n &>table {\n width: inherit;\n border-collapse: collapse;\n table-layout: fixed;\n border-left: 1px solid var(--xv-data-table-border-color);\n border-right: 1px solid var(--xv-data-table-border-color);\n }\n\n &>caption {\n display: contents;\n }\n\n .loading {\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: var(--xv-data-table-min-height, 51.11px);\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.8);\n }\n}\n\n:host([block]) {\n width: 100%;\n &>table {\n table-layout: fixed;\n }\n}\n\n:host([size=\"xs\"]) {\n --xv-data-table-padding-x: var(--spacing-02, 4px);\n --xv-data-table-padding-y: var(--spacing-02, 4px);\n}\n:host([size=\"sm\"]) {\n --xv-data-table-padding-x: var(--spacing-04, 12px);\n --xv-data-table-padding-y: var(--spacing-03, 8px);\n}\n:host([size=\"md\"]) {\n --xv-data-table-padding-x: var(--spacing-05, 16px);\n --xv-data-table-padding-y: var(--spacing-05, 16px);\n}\n:host([size=\"lg\"]) {\n --xv-data-table-padding-x: var(--spacing-05, 16px);\n --xv-data-table-padding-y: var(--spacing-06, 24px);\n}\n:host([size=\"xl\"]) {\n --xv-data-table-padding-x: var(--spacing-06, 24px);\n --xv-data-table-padding-y: var(--spacing-07, 32px);\n}\n","import { Component, h, Host, Prop, Element } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\n\n@Component({\n tag: 'xv-data-table',\n styleUrl: 'xv-data-table.scss',\n shadow: true,\n})\nexport class XvDataTable {\n @Element() el: HTMLElement;\n @Prop() size: SIZE_VAR = SIZE_VAR.MD;\n @Prop() block?: boolean;\n @Prop() loading?: boolean;\n @Prop() columnWidths: (string | null)[] = [];\n @Prop() hover: boolean = false;\n\n render() {\n return (\n <Host class=\"xv-data-table\">\n <caption>\n <slot name=\"title\" />\n </caption>\n <div class=\"bar\">\n <div class=\"bar_batch\">\n <slot name=\"batch\" />\n </div>\n <div class=\"bar_toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n <table role=\"table\">\n {this.columnWidths.length > 0 && (\n <colgroup>\n {this.columnWidths.map((width = 'auto') => <col style={{ width }} />)}\n </colgroup>\n )}\n <thead><slot name=\"header\" /></thead>\n <tbody><slot /></tbody>\n <tfoot><slot name=\"footer\" /></tfoot>\n </table>\n\n {!!this.loading && (\n <div class=\"loading\">\n <xv-loader-v2 size={SIZE_VAR.LG} />\n </div>\n )}\n </Host>\n );\n }\n}\n",":host {\n display: table-cell;\n border-style: solid;\n border-left-width: 0;\n border-right-width: 0;\n border-top-width: var(--xv-data-table-border-width, 0);\n border-bottom-width: var(--xv-data-table-border-width, 0);\n border-color: var(--xv-data-table-border-color, transparent);\n padding-inline: var(--xv-data-table-padding-x, 0);\n padding-block: var(--xv-data-table-padding-y, 0);\n vertical-align: middle;\n word-break: break-all;\n font-style: normal;\n font-weight: 400;\n\n .line-clamp {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n:host(:not(.multiline)) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n ::slotted(*) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\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, Event, EventEmitter, Element, h, Host, Listen, Prop } from '@stencil/core';\nimport { forEach, uidGenerator } from '../../../utils/utils';\nimport { XV_SORT_DIR } from '../../../types/enum';\n\n@Component({\n tag: 'xv-data-table-cell',\n styleUrl: 'xv-data-table-cell.scss',\n shadow: true,\n})\nexport class XvDataTableCell {\n @Element() el: HTMLElement;\n @Prop({ mutable: true }) name?: string;\n @Prop({ reflect: true, mutable: true }) sort?: XV_SORT_DIR | '';\n @Prop() multiline: number;\n @Prop() width?: string;\n @Prop() align?: 'left' | 'right' | 'center';\n @Prop() tooltip?: string;\n\n @Event({ eventName: 'sortChange' }) sortChange: EventEmitter<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 || sort === XV_SORT_DIR.DESC\n ? XV_SORT_DIR.ASC\n : XV_SORT_DIR.DESC;\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(this.sort);\n };\n\n render() {\n return (\n <Host\n role=\"cell\"\n style={{ width: this.width }}\n class={{\n multiline: this.multiline !== undefined,\n [`align--${this.align}`]: !!this.align\n }}\n >\n {!this.multiline || isNaN(this.multiline) ? this.__renderWithTooltip() : (\n <div class=\"line-clamp\" style={{ ['-webkit-line-clamp']: `${this.multiline}` }}>\n {this.__renderWithTooltip()}\n </div>\n )}\n </Host>\n );\n }\n\n private __renderWithTooltip() {\n if (!this.tooltip) return <slot />\n\n return (\n <xv-tooltip-v2\n dashed={true}\n position=\"top-start\"\n message={this.tooltip}\n ><slot /></xv-tooltip-v2>\n );\n }\n}\n","\nexport interface XvDataTableCheck {\n name: string;\n checked: boolean;\n value?: string | number | object;\n partial?: boolean;\n header?: boolean;\n footer?: boolean;\n expandable?: boolean;\n}\n\nexport const XV_DATA_TABLE_TAG = 'xv-data-table';\nexport const XV_DATA_TABLE_ROW_TAG = 'xv-data-table-row';\n",":host([collapsed]) {\n display: none;\n}\n\n:host([expanded]) {\n display: contents;\n}\n","import { Component, Host, h, Prop, Element, Method, Event, EventEmitter } from '@stencil/core';\nimport { XV_DATA_TABLE_ROW_TAG, XV_DATA_TABLE_TAG } from '../_vars';\n\n@Component({\n tag: 'xv-data-table-collapse',\n styleUrl: 'xv-data-table-collapse.scss',\n shadow: true,\n})\nexport class XvDataTableCollapse {\n @Element() el: HTMLElement;\n @Prop({ reflect: true, mutable: true }) collapsed: boolean = false;\n @Event({ eventName: 'collapsedChange' }) collapsedChange: EventEmitter<boolean>;\n\n @Method()\n async setCollapsed(collapsed: boolean): Promise<boolean> {\n this.collapsed = collapsed;\n this.collapsedChange.emit(this.collapsed);\n\n return this.collapsed;\n }\n\n componentWillLoad() {\n const table = this.el.closest(XV_DATA_TABLE_TAG);\n const rows = table.querySelectorAll(XV_DATA_TABLE_ROW_TAG);\n rows.forEach((row) => row?.setAttribute('collapsable', ''));\n }\n\n render() {\n return (\n <Host id={this.el.id}\n part=\"xv-collapse\"\n class={this.el.className}\n collapsed={this.collapsed}\n expanded={!this.collapsed}>\n <slot></slot>\n </Host>\n );\n }\n}\n",":host {\n display: table-row;\n background-color: var(--xv-data-table-row-bg, transparent);\n transition: .2s ease-in-out background-color;\n .cell-control {\n font-size: 8px;\n max-width: 16px;\n position: relative;\n padding-left: calc(var(--xv-data-table-padding-x) + (var(--xv-data-table-padding-x) + 10px + 1em));\n overflow: visible;\n &_collapse {\n font-size: inherit;\n width: 1em;\n height: 1em;\n margin: 0;\n padding: 0;\n position: absolute;\n overflow: visible;\n background-color: transparent;\n outline: none;\n top: calc(50% - 0.7em);\n left: var(--xv-data-table-padding-x);\n display: inline-flex;\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, .2s ease-in-out opacity;\n cursor: pointer;\n box-sizing: content-box;\n &:active {\n opacity: 0.4;\n }\n &.open {\n transform: rotate(-135deg);\n }\n }\n\n &_checkbox {\n display: flex;\n }\n }\n}\n\n:host(.hover:not(.header):hover) {\n background-color: var(--layer-hover-01, #E9E9E9);\n}\n\n:host(.header) {\n background-color: var(--layer-accent-01, #F7F7F7);\n}\n\n:host(.checked) {\n background-color: var(--layer-selected-01, #E3E3E3);\n}\n\n:host(.hover.checked:hover) {\n background-color: var(--layer-selected-hover-01, #DADADA);\n}\n\n:host(.footer),\n:host(.footer:hover),\n:host(.footer.hover),\n:host(.footer.hover:hover) {\n background-color: var(--layer-accent-02, #E3E3E3);\n}\n\n:host(.disabled:not(.header):not(.footer)) {\n opacity: 0.5;\n cursor: not-allowed;\n user-select: none;\n}\n","import { Component, h, Host, Prop, Element, State, Event, EventEmitter } from '@stencil/core';\nimport { uidGenerator } from '../../../utils/utils';\nimport { XV_DATA_TABLE_TAG, XvDataTableCheck } from '../_vars';\n\n@Component({\n tag: 'xv-data-table-row',\n styleUrl: 'xv-data-table-row.scss',\n shadow: true,\n})\nexport class XvDataTableRow {\n @Element() el: HTMLElement;\n @Prop() variant?: 'checkbox';\n @Prop({ mutable: true }) name?: string;\n @Prop() collapse?: string;\n @Prop({ reflect: true }) collapsable?: boolean;\n @Prop({ mutable: true }) checked: boolean = false;\n @Prop({ mutable: true }) partial: boolean = false;\n @Prop({ mutable: true }) hover: boolean = false;\n @Prop() header: boolean = false;\n @Prop() footer: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() readonly: boolean = false;\n @Prop() required: boolean = false;\n @Prop() value?: string | number | object;\n\n @Event() check: EventEmitter<XvDataTableCheck>;\n\n @State() collapsed: boolean = false;\n\n private collapseEl?: HTMLXvDataTableCollapseElement;\n\n private collapseClick = async () => {\n if (!this.collapse || !this.collapseEl) return;\n\n this.collapsed = !this.collapsed;\n await this.collapseEl?.setCollapsed(this.collapsed);\n }\n\n private setInitialState = () => {\n if (this.collapse && !this.collapseEl) {\n this.collapseEl = this.el.parentElement.querySelector(`xv-data-table-collapse${this.collapse}`);\n this.collapsed = this.collapseEl?.hasAttribute('collapsed');\n }\n\n if (!this.hover) {\n const table = this.el.closest(XV_DATA_TABLE_TAG);\n this.hover = table.hasAttribute('hover');\n }\n }\n\n private checkedChangeHandle = ({ detail: checked }: CustomEvent<boolean>) => {\n if (!checked && this.partial) this.partial = checked;\n if (!this.name) this.name = uidGenerator();\n this.check.emit({\n checked,\n name: this.name,\n value: this.value,\n partial: this.partial,\n header: this.el.slot === 'header',\n footer: this.el.slot === 'footer',\n expandable: !!this.collapseEl,\n });\n };\n\n render() {\n return (\n <Host\n role=\"row\"\n part=\"xv-row\"\n class={{\n checked: this.checked,\n hover: this.hover,\n disabled: this.disabled,\n header: this.el.slot === 'header' || !!this.header,\n footer: this.el.slot === 'footer' || !!this.footer,\n }}>\n {(!!this.variant || this.collapsable) && (\n <xv-data-table-cell width={!!this.variant ? '16px' : '0'} class=\"cell-control\">\n {!!this.collapse && (\n <button class={{ 'cell-control_collapse': true, open: !this.collapsed }} onClick={this.collapseClick}></button>\n )}\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 readonly={this.readonly}\n required={this.required}\n onEventChange={this.checkedChangeHandle}\n class=\"cell-control_checkbox\"></xv-checkbox-v2>\n )}\n </xv-data-table-cell>\n )}\n <slot onSlotchange={this.setInitialState} />\n </Host>\n );\n }\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 display: block;\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 margin-bottom: 8px;\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 &_info {\n margin-left: var(--spacing-02);\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: 4px 0 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({ reflect: true }) disabled?: boolean;\n @Prop({ reflect: true }) multiple?: boolean;\n @Prop({ reflect: true }) required?: boolean;\n @Prop({ reflect: true }) loading?: boolean;\n @Prop({ reflect: true, mutable: true }) open?: boolean;\n @Prop({ reflect: true }) error?: string;\n @Prop({ reflect: true }) label?: string;\n @Prop({ reflect: true }) helper?: string;\n @Prop({ reflect: true }) warning?: string;\n @Prop({ reflect: true }) placeholder?: string;\n @Prop({ reflect: false }) info?: 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 || this.loading) 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\n class=\"xv-dropdown\"\n role=\"combobox\"\n size={this.size}\n open={this.open}\n error={this.error}\n disabled={this.disabled}\n tabindex={this.disabled ? -1 : false}>\n <label class=\"label\">\n <slot name=\"label\">{this.label}</slot>\n {this.info && <xv-tooltip-v2 class=\"label_info\" message={this.info}></xv-tooltip-v2>}\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.renderIcon()}\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 private renderIcon(): undefined | HTMLElement {\n if (this.loading) {\n return <xv-loader-v2 class=\"control_icon error\" size={SIZE_VAR.XS} />\n }\n\n if (this.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\n if (!this.error && !!this.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\" 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\n return undefined;\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","export enum XvFileUploaderVariants {\n BUTTON = 'button',\n DRAG_DROP = 'drag-drop'\n}\n",":host {\n font-family: inherit;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-05);\n font-size: 14px;\n\n .label {\n font-weight: 600;\n font-size: 1em;\n color: var(--text-primary);\n }\n\n .description {\n font-size: 1em;\n margin: 0;\n color: var(--text-secondary);\n }\n\n .upload-btn {\n padding: 0 1.14em;\n border-radius: 0.285em;\n background-color: var(--background-inverse);\n color: var(--text-inverse);\n border: none;\n cursor: pointer;\n font-size: 1em;\n height: 2.86em;\n transition: 250ms ease-in-out background-color;\n\n &:hover {\n background-color: var(--background-inverse-hover);\n }\n }\n\n .drop-zone {\n min-height: 90px;\n border: 1px dashed var(--border-strong-01);\n background-color: transparent;\n padding: 1.14em;\n border-radius: 0.285em;\n transition: border-color 0.2s ease, background-color 0.2s ease;\n font-size: 1em;\n cursor: pointer;\n\n &.active {\n border-color: var(--border-interactive);\n background-color: var(--background-active);\n }\n\n &:hover {\n background-color: var(--background-hover);\n }\n }\n\n .file-list {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n .file {\n border-radius: 3px;\n background-color: var(--layer-01, #F7F7F7);\n font-size: 1em;\n &_container {\n padding: var(--spacing-04) var(--spacing-05);\n display: flex;\n justify-content: space-between;\n align-items: center;\n &_name {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n color: var(--text-primary, #333);\n font-style: normal;\n font-weight: 400;\n line-height: 128.571%;\n letter-spacing: 0.16px;\n padding-right: var(--spacing-04);\n }\n\n &_errorIcon {\n color: var(--text-error);\n margin-right: var(--spacing-03);\n }\n }\n\n &.withError {\n outline: 2px solid var(--support-error);\n }\n }\n }\n\n .error-container {\n padding: var(--spacing-04) var(--spacing-05);\n border-top: 1px solid var(--border-subtle-01);\n font-size: 0.858em;\n font-style: normal;\n font-weight: 400;\n color: var(--text-error);\n &_primary,\n &_secondary {\n margin: 0;\n padding: 0;\n }\n\n &_secondary {\n color: var(--text-secondary, #515151);\n white-space: pre-line;\n }\n }\n}\n\n:host(.disabled) {\n pointer-events: none;\n opacity: 0.6;\n\n .upload-btn,\n .drop-zone {\n cursor: not-allowed;\n background-color: var(--button-disabled-background, #ccc);\n color: var(--button-disabled-text, #666);\n border-color: var(--border-disabled, #bbb);\n }\n\n .remove-btn {\n display: none;\n }\n}\n\n// Size variants\n:host([size='xs']) {\n font-size: 10px;\n}\n:host([size='sm']) {\n font-size: 12px;\n}\n:host([size='md']) {\n font-size: 14px;\n}\n:host([size='lg']) {\n font-size: 18px;\n}\n:host([size='xl']) {\n font-size: 22px;\n}\n","import { Component, EventEmitter, Event, h, Host, Prop, State, Fragment, Method } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\nimport { XvFileUploaderVariants } from './_vars';\n\n@Component({\n tag: 'xv-file-uploader',\n styleUrl: 'xv-file-uploader.scss',\n shadow: true,\n})\nexport class XvFileUploader {\n @Prop() label?: string;\n @Prop() description?: string;\n @Prop({ attribute: 'add-text' }) addText?: string;\n @Prop() variant: XvFileUploaderVariants = XvFileUploaderVariants.BUTTON;\n @Prop() size: SIZE_VAR = SIZE_VAR.MD;\n @Prop() accept: string[] = [];\n @Prop() buttonVariant: 'primary' | 'secondary' | 'ghost' | 'danger' | 'tertiary' = 'primary';\n @Prop({ attribute: 'max-file-size-mb' }) maxFileSizeMB: number = 5;\n @Prop({ attribute: 'max-files' }) maxFiles: number = 20;\n @Prop() multiple: boolean = true;\n @Prop({ reflect: true }) disabled?: boolean;\n @Prop({ reflect: true, mutable: true }) files: File[] = [];\n @Prop({ reflect: true, mutable: true, attribute: 'loading-states' }) loadingStates: ('loading' | 'success' | 'uploaded')[] = [];\n @Prop({ reflect: true, mutable: true }) error?: string;\n @Prop({ reflect: true, mutable: true }) errors: string[] | { primary: string; secondary: string; }[] = [];\n\n @State() dragActive = false;\n @State() errorMessages: string[] = [];\n\n @Event() filesChange: EventEmitter<File[]>;\n @Event() fileRemoved: EventEmitter<File>;\n\n private fileInput: HTMLInputElement;\n\n @Method()\n async clearFiles() {\n this.files = [];\n if (this.fileInput) {\n this.fileInput.value = '';\n }\n }\n\n private onFileSelect = (event: Event) => {\n const input = event.target as HTMLInputElement;\n const selectedFiles = Array.from(input.files || []);\n this.handleFiles(selectedFiles);\n };\n\n private onDrop = (event: DragEvent) => {\n event.preventDefault();\n this.dragActive = false;\n const droppedFiles = Array.from(event.dataTransfer?.files || []);\n this.handleFiles(droppedFiles);\n };\n\n private handleFiles = (files: File[]) => {\n this.files = this.validation(this.multiple ? [...this.files, ...files] : files);\n this.filesChange.emit(this.files);\n };\n\n private validation(files: File[]): File[] {\n const maxSize = this.maxFileSizeMB * 1024 * 1024;\n const seenFileNames = new Set<string>();\n const errorMessages: (string | null)[] = [];\n const uniqueFiles: File[] = [];\n\n for (const file of files) {\n let error: string | undefined = null;\n\n if (!seenFileNames.has(file.name)) {\n seenFileNames.add(file.name);\n uniqueFiles.push(file);\n }\n\n const dotIndex = file.name.lastIndexOf('.');\n const extension = file.name.substring(dotIndex).toLowerCase();\n const isAccepted = this.accept.length === 0 || this.accept.some(type => type.toLowerCase() === extension);\n\n if (!isAccepted) {\n error = 'Unsupported file type.';\n } else if (file.size > maxSize) {\n error = `File ${file.name} is too large.`;\n }\n\n errorMessages.push(error);\n }\n\n this.error = uniqueFiles.length > this.maxFiles\n ? `Only ${this.maxFiles} file(s) allowed.`\n : null;\n\n this.errorMessages = errorMessages;\n\n return uniqueFiles;\n }\n\n private removeFile(index: number) {\n if (this.files[index]) this.fileRemoved.emit(this.files[index]);\n this.files = this.validation([...this.files.slice(0, index), ...this.files.slice(index + 1)]);\n this.filesChange.emit(this.files);\n if (this.fileInput) {\n this.fileInput.value = '';\n }\n }\n\n private onDragOver = (event: DragEvent) => {\n event.preventDefault();\n this.dragActive = true;\n };\n\n private onDragLeave = () => {\n this.dragActive = false;\n };\n\n render() {\n return (\n <Host class={{ 'upload-wrapper': true, [`uploader-${this.size}`]: true, disabled: !!this.disabled }}>\n {this.label && <label class=\"label\">{this.label}</label>}\n {this.description && <p class=\"description\">{this.description}</p>}\n {this.variant === 'button' ? (\n <xv-button-v2 variant={this.buttonVariant} disabled={this.disabled} onClick={() => this.fileInput.click()}>\n {this.addText || 'Dateien auswählen'}\n </xv-button-v2>\n ) : (\n <div\n class={{ 'drop-zone': true, active: this.dragActive }}\n onDrop={this.onDrop}\n onDragOver={this.onDragOver}\n onDragLeave={this.onDragLeave}\n onClick={() => this.fileInput.click()}\n >\n {this.addText || 'Dateien hierher ziehen oder darauf klicken, um eine Datei auszuwählen.'}\n {this.accept?.length > 0 && <span> ({this.accept.join(', ')})</span>}\n </div>\n )}\n\n <input\n ref={el => (this.fileInput = el)}\n type=\"file\"\n hidden\n onChange={this.onFileSelect}\n multiple={this.multiple}\n accept={this.accept.join(',')}\n />\n\n <ul class=\"file-list\">\n {this.files.map((file, index) => (\n <li class={{ file: true, withError: !!(this.errors?.[index] || this.errorMessages?.[index]) }}>\n <div class=\"file_container\">\n <span class=\"file_container_name\">{file.name}</span>\n {this._renderLoaderState(index)}\n </div>\n {this._renderError(index)}\n </li>\n ))}\n </ul>\n {this.error && (\n <div class=\"error-container\">\n <p class=\"error-container_primary\">{this.error}</p>\n </div>\n )}\n </Host>\n );\n }\n\n private _renderLoaderState(index: number) {\n const state = this.loadingStates?.[index] || null;\n\n const errorIcon = this.errors?.[index] || this.errorMessages?.[index] ? (\n <svg class=\"file_container_errorIcon\" width=\"16\" height=\"16\" 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 ) : null;\n\n switch (state) {\n case 'loading':\n return (\n <Fragment>\n {errorIcon}\n <xv-loader-v2 size={SIZE_VAR.XS} />\n </Fragment>\n );\n case 'success':\n return (\n <Fragment>\n {errorIcon}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\">\n <path\n d=\"M9 16C6.125 16 3.5 14.5 2.0625 12C0.625 9.53125 0.625 6.5 2.0625 4C3.5 1.53125 6.125 0 9 0C11.8438 0 14.4688 1.53125 15.9062 4C17.3438 6.5 17.3438 9.53125 15.9062 12C14.4688 14.5 11.8438 16 9 16ZM12.5312 6.53125H12.5C12.8125 6.25 12.8125 5.78125 12.5 5.46875C12.2188 5.1875 11.75 5.1875 11.4688 5.46875L8 8.96875L6.53125 7.5C6.21875 7.1875 5.75 7.1875 5.46875 7.5C5.15625 7.78125 5.15625 8.25 5.46875 8.53125L7.46875 10.5312C7.75 10.8438 8.21875 10.8438 8.53125 10.5312L12.5312 6.53125Z\"\n fill=\"#97BF0D\" />\n </svg>\n <xv-button-v2 variant=\"ghost\" size={SIZE_VAR.XS} onClick={() => this.removeFile(index)}>\n <span slot=\"icon-left\">×</span>\n </xv-button-v2>\n </Fragment>\n );\n case 'uploaded':\n default:\n return (\n <Fragment>\n {errorIcon}\n <xv-button-v2 variant=\"ghost\" size={SIZE_VAR.XS} onClick={() => this.removeFile(index)}>\n <span slot=\"icon-left\">×</span>\n </xv-button-v2>\n </Fragment>\n );\n }\n }\n\n private _renderError(index: number) {\n const error = this.errors?.[index] || this.errorMessages?.[index];\n\n if (!error) return;\n\n if (typeof error === 'object') {\n return (\n <div class=\"error-container\">\n <p class=\"error-container_primary\">{error.primary}</p>\n <p class=\"error-container_secondary\">{error.secondary}</p>\n </div>\n );\n }\n\n if (typeof error === 'string') {\n return (\n <div class=\"error-container\">\n <p class=\"error-container_primary\">{error}</p>\n </div>\n );\n }\n\n return null;\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 @State() showLoginModal = false;\n @Element() el: HTMLElement;\n\n\n private openLoginModal = () => {\n this.showLoginModal = true;\n };\n\n private closeLoginModal = () => {\n this.showLoginModal = false;\n };\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>&nbsp;\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>&nbsp;Cockpitfunktionen&nbsp;<i class=\"fa fa-caret-down\"></i></a>\n </li>\n <li>\n <a href=\"#\"><i class=\"fa fa-cubes\"></i>&nbsp;Entitäten&nbsp;<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>&nbsp;Mein Crossvertise&nbsp;<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>&nbsp;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-xs hidden-sm\">\n <a role=\"button\" onClick={this.openLoginModal} class=\"btn btn-default navbar-btn btn-link\">\n <i class=\"fa fa-user fa-lg\" aria-hidden=\"true\"></i>\n <span>Login</span>\n </a>\n </li>\n <xv-login-modal visible={this.showLoginModal} onClose={this.closeLoginModal}></xv-login-modal>\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\">&nbsp;Warenkorb&nbsp;</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:host(.xv-link_ghost) {\n .xv-link {\n display: contents;\n color: inherit;\n text-decoration: 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' | 'ghost' = '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","@import '../../global.scss';\n","import { Component, Event, EventEmitter, h, Prop, State } from '@stencil/core';\n\ntype OAuthProvider = {\n displayName: string;\n providerName: string;\n icon: string;\n buttonClass: string;\n};\n\n@Component({\n tag: 'xv-login-modal',\n styleUrl: 'xv-login-modal.scss',\n shadow: true,\n})\nexport class XvLoginModal {\n @Prop() visible: boolean = false;\n @Event() close: EventEmitter<void>;\n @State() oauthProviders: OAuthProvider[] = [];\n @State() bookNow: boolean = false;\n @State() returnUrl: string = '/';\n @State() passwordLoginEnabled: boolean = true;\n @State() oauthLoginEnabled: boolean = true;\n @State() passwordRegistrationEnabled: boolean = true;\n @State() configurationName: string = 'Xv';\n @State() xvMvcConfigName: string = 'Xv';\n @State() contactUrl: string = 'https://sitefinity-qa.crossvertise.com/ueber-uns/kontakt';\n\n componentWillLoad() {\n this.setReturnUrl();\n this.readMetaNavCookie();\n this.oauthProviders = [\n {\n displayName: 'Google',\n providerName: 'Google',\n icon: 'fa fa-google',\n buttonClass: 'btn btn-block btn-google-primary btn-primary',\n },\n ];\n }\n\n private setReturnUrl() {\n const params = new URLSearchParams(window.location.search);\n let url = params.get('returnUrl') || window.location.href;\n if (url.toLowerCase().includes('resetpassword')) {\n url = '/';\n }\n this.returnUrl = url;\n }\n\n private readMetaNavCookie() {\n const metaNavCookie = document.cookie\n .split('; ')\n .find(row => row.startsWith('metaNav='));\n if (!metaNavCookie) return;\n try {\n const cookieValue = decodeURIComponent(metaNavCookie.split('=')[1]);\n const metaNavObj = JSON.parse(cookieValue);\n this.passwordLoginEnabled = !!metaNavObj.PasswordLoginEnabled;\n this.oauthLoginEnabled = !!metaNavObj.oauthLoginEnabled;\n this.passwordRegistrationEnabled = !!metaNavObj.PasswordRegistrationEnabled;\n this.configurationName = metaNavObj.ConfigurationName;\n this.xvMvcConfigName = metaNavObj.XvMvcConfigName;\n this.contactUrl = metaNavObj.ContactUrl;\n } catch (e) {\n console.warn('Could not parse metaNav cookie:', e);\n }\n }\n\n private handleClose = () => {\n this.close.emit();\n };\n\n private renderPasswordLogin() {\n if (!this.passwordLoginEnabled) return null;\n return (\n <label class=\"pull-right spacer\">\n <a href=\"/de-de/mycrossvertise/account/lostpassword\" target=\"_blank\" rel=\"noopener\">\n Passwort vergessen?\n </a>\n </label>\n );\n }\n\n private renderOAuthProviders() {\n if (!this.oauthLoginEnabled) return null;\n return (\n <div class=\"row\">\n <div class=\"col-xs-12\">\n <div class=\"col-xs-12\">\n <div class=\"row spacer spacer-bottom\">\n <div class=\"col-xs-5\"><hr /></div>\n <div class=\"col-xs-2 text-center placeholder\">oder</div>\n <div class=\"col-xs-5\"><hr /></div>\n <div class=\"col-xs-12\">\n <span>Alternative Anmeldung:</span>\n </div>\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div class=\"col-xs-12 no-padding-right\">\n <form\n method=\"POST\"\n class=\"spacer\"\n action=\"/de-de/mycrossvertise/account/externallogin\"\n >\n <div class=\"row\">\n {this.oauthProviders.map(provider => (\n <div class=\"col-xs-6 col-sm-3 no-padding-left padding-bottom-10 center-cell\">\n <button\n type=\"submit\"\n style={{ maxWidth: '125px' }}\n name=\"provider\"\n class={`cell-content btn btn-primary ${provider.buttonClass} btn-block`}\n value={provider.providerName}\n title={`Mit ${provider.displayName} anmelden`}\n >\n <i class={`${provider.icon} pull-left`}></i>\n <span>{provider.displayName}</span>\n </button>\n </div>\n ))}\n </div>\n <input type=\"hidden\" name=\"BookNow\" value={this.bookNow.toString()} />\n </form>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n private renderFooter() {\n if (!this.passwordRegistrationEnabled && this.configurationName !== this.xvMvcConfigName) return null;\n return (\n <div class=\"modal-footer\">\n <div class=\"col-sm-12 text-left\">\n {this.passwordRegistrationEnabled && (\n <div>\n Noch kein Kunde?\n <a\n href={`/de-de/mycrossvertise/account/register?returnUrl=${encodeURIComponent(this.returnUrl)}`}\n >\n Jetzt kostenlos registrieren!\n </a>\n </div>\n )}\n {this.configurationName === this.xvMvcConfigName && (\n <div>\n <div class=\"spacer\">Sie sind bereits registriert, können sich aber nicht einloggen?</div>\n <div>\n <a href={this.contactUrl}>Kontaktieren Sie uns</a>, wir kümmern uns darum.\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n render() {\n if (!this.visible) return null;\n return (\n <div class=\"modal show\" style={{ display: 'block' }} id=\"login-modal\" tabIndex={-1} role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <div class=\"row\">\n <div class=\"col-sm-10\">\n <div class=\"col-xs-12\">\n <h4 class=\"modal-title\">Login</h4>\n </div>\n </div>\n <div class=\"col-xs-1 pull-right\">\n <button onClick={this.handleClose} type=\"button\" class=\"close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n </div>\n </div>\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <form\n autoComplete=\"off\"\n id=\"logon-modal-form\"\n action={`/de-de/mycrossvertise/account/logon?returnUrl=${encodeURIComponent(this.returnUrl)}`}\n method=\"post\"\n class=\"spacer\"\n >\n <input type=\"hidden\" name=\"returnUrl\" value={this.returnUrl} />\n <div class=\"form-group spacer-bottom\">\n <div class=\"control-label col-xs-12\">\n <label htmlFor=\"LoginPopup.UserName\">E-Mail</label>\n <strong class=\"text-danger\">*</strong>\n </div>\n <div class=\"col-xs-12\">\n <input class=\"form-control\" id=\"userName\" name=\"UserName\" type=\"text\" tabIndex={1} />\n </div>\n </div>\n <div class=\"form-group spacer\">\n <div class=\"control-label col-xs-6\">\n <label class=\"spacer\" htmlFor=\"LoginPopup.Password\">Passwort</label>\n <strong class=\"text-danger spacer\">*</strong>\n </div>\n <div class=\"col-xs-6\">\n {this.renderPasswordLogin()}\n </div>\n <div class=\"col-xs-12\">\n <input class=\"form-control\" id=\"password\" name=\"Password\" type=\"password\" tabIndex={2} />\n </div>\n </div>\n <div class=\"form-group spacer\">\n <div class=\"col-xs-12\">\n <button class=\"btn btn-primary btn-lg btn-block spacer\" type=\"submit\" tabIndex={3}>\n Anmelden\n </button>\n </div>\n </div>\n <div class=\"form-group\">\n <div class=\"checkbox col-xs-12\">\n <label htmlFor=\"RememberMe\">\n <input id=\"RememberMe\" name=\"RememberMe\" type=\"checkbox\" value=\"true\" />\n Angemeldet bleiben?\n </label>\n </div>\n </div>\n </form>\n </div>\n </div>\n {this.renderOAuthProviders()}\n </div>\n {this.renderFooter()}\n </div>\n </div>\n </div>\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: visible;\n &.overflow {\n overflow: auto;\n }\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 .loading {\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.8);\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({ reflect: true }) permanent: boolean = false;\n /**\n * Size of modal. But max size is 90% view width\n */\n @Prop({ reflect: true }) size: SIZE_VAR = SIZE_VAR.MD;\n /**\n * When need scroll modal content\n */\n @Prop({ reflect: true }) overflow: boolean = true;\n /**\n * Modal loading state\n */\n @Prop() loading?: boolean;\n\n @Event({ eventName: 'openChange' }) openChange!: EventEmitter<boolean>;\n\n private triggerEl: HTMLElement | null = null;\n\n @Method()\n async openModal() {\n this.open = true;\n this.openChange?.emit(this.open);\n return this.open\n };\n\n @Method()\n async closeModal() {\n this.open = false;\n this.openChange?.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)}>&times;</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': true, overflow: this.overflow }}>\n <slot />\n </div>\n\n <div class=\"modal_footer\">\n <slot name=\"footer\" />\n </div>\n\n {!!this.loading && (\n <div class=\"loading\">\n <xv-loader-v2 size={SIZE_VAR.LG} />\n </div>\n )}\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 word-break: break-all;\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({ reflect: true }) variant: NOTIFICATION_VARIANTS = NOTIFICATION_VARIANTS.INFO;\n @Prop({ reflect: true }) 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",":host {\n display: inline-block;\n text-align: left;\n .control {\n &_label {\n display: block;\n margin-bottom: var(--spacing-03);\n color: var(--text-secondary, #515151);\n font-family: var(--ff-body, Tahoma);\n font-size: var(--fz-sm, 12px);\n font-style: normal;\n font-weight: 700;\n line-height: var(--fz-md);\n letter-spacing: 0.32px;\n }\n\n &_input {\n display: flex;\n border: 1px solid var(--border-subtle-01);\n outline: 2px solid transparent;\n background-color: transparent;\n border-radius: 3px;\n transition: 250ms ease-in-out border-color, 250ms ease-in-out outline-color;\n &:hover {\n border-color: var(--border-subtle-selected-01);\n }\n\n &:focus-within {\n outline-color: var(--focus);\n }\n\n &.error {\n outline-color: var(--support-error);\n }\n\n &.readonly {\n border-radius: 0;\n border-top-width: 0;\n border-left-width: 0;\n border-right-width: 0;\n outline-color: transparent;\n }\n\n input[type=\"number\"] {\n flex: 1;\n border: none;\n outline: none;\n -moz-appearance: textfield;\n background-color: transparent;\n margin: 0;\n padding-block: 0;\n padding-inline: var(--spacing-05);\n box-sizing: border-box;\n color: var(--text-primary);\n min-width: 20px;\n font-style: normal;\n font-weight: 400;\n letter-spacing: 0.16px;\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n\n &__icons {\n display: inline-flex;\n align-items: stretch;\n column-gap: 2px;\n .status-icon {\n display: inline-flex;\n align-items: center;\n align-self: center;\n font-size: 1.35em;\n &.error {\n background-color: var(--support-error);\n color: white;\n width: 16px;\n height: 16px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: bold;\n align-items: center;\n justify-content: center;\n }\n &.warning {\n color: var(--support-warning);\n }\n }\n\n hr {\n border: none;\n outline: none;\n width: 2px;\n height: 60%;\n align-self: center;\n background-color: var(--border-subtle-01);\n display: inline-flex;\n }\n }\n }\n }\n\n .message {\n margin: var(--spacing-02) 0 0;\n color: var(--text-helper, #646464);\n font-size: var(--fz-sm, 12px);\n font-style: normal;\n font-weight: 400;\n line-height: var(--fz-md, 16px);\n letter-spacing: 0.32px;\n &.error {\n color: var(--text-error);\n }\n &.warning {\n color: var(--text-secondary, #515151);\n }\n }\n}\n\n:host(.disabled) {\n cursor: not-allowed;\n\n .control_label,\n .control_input input[type=\"number\"],\n .control_input input[type=\"number\"]::placeholder,\n .message:not(.error) {\n color: var(--text-disabled);\n cursor: not-allowed;\n }\n\n .control_input__icons,\n .message.error {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n:host([block]) {\n display: block;\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, AttachInternals } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\n\n@Component({\n tag: 'xv-number-input-v2',\n styleUrl: 'xv-number-input.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class XvNumberInput {\n @Prop() label: string;\n @Prop({ reflect: true }) placeholder?: string;\n @Prop({ reflect: true }) name: string;\n @Prop({ reflect: true, mutable: true }) value: number;\n @Event({ eventName: 'valueChange' }) valueChange: EventEmitter<number>;\n @Prop() helper?: string;\n @Prop() error?: string | boolean;\n @Prop() warning?: string | boolean;\n @Prop() step: number = 10;\n @Prop() max?: number;\n @Prop() min?: number;\n @Prop() readonly?: boolean;\n @Prop() disabled?: boolean;\n @Prop() loading: boolean = false;\n @Prop() block?: boolean;\n @Prop({ reflect: true }) size: SIZE_VAR = SIZE_VAR.MD;\n\n @AttachInternals() internals: ElementInternals;\n\n private increment = () => {\n const newValue = (this.value || 0) + this.step;\n if (this.max !== undefined && newValue > this.max) return;\n this.setValue(newValue)\n };\n\n private decrement = () => {\n const newValue = (this.value || 0) - this.step;\n if (this.min !== undefined && newValue < this.min) return;\n this.setValue(newValue)\n };\n\n private handleInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n const num = parseFloat(input.value) || 0;\n\n if (isNaN(num)) return;\n\n this.setValue(num);\n };\n\n private setValue(value: number) {\n this.value = value;\n this.internals.setFormValue(this.value?.toString());\n this.valueChange.emit(this.value);\n }\n\n render() {\n return (\n <Host class={{ disabled: !!this.disabled }}>\n <label class=\"control\">\n {this.label && <span class=\"control_label\">{this.label}</span>}\n\n <div class={{\n 'control_input': true,\n readonly: !!this.readonly,\n error: !!this.error,\n warning: !!this.warning\n }}>\n <input\n type=\"number\"\n placeholder={this.placeholder}\n disabled={this.disabled}\n readonly={this.readonly}\n onInput={this.handleInput}\n name={this.name}\n min={this.min}\n max={this.max}\n step={this.step}\n value={this.value}\n />\n\n <div class=\"control_input__icons\">\n {this.loading ? (\n <xv-loader-v2 size={SIZE_VAR.XS} />\n ) : !!this.error ? (\n <span class=\"status-icon error\" aria-hidden=\"true\">!</span>\n ) : !!this.warning ? (\n <span class=\"status-icon warning\" aria-hidden=\"true\">⚠</span>\n ) : null}\n <xv-button-v2\n size={this.size}\n variant=\"ghost\"\n disabled={this.disabled || this.readonly}\n onClick={this.decrement}\n aria-label=\"Decrease\"\n ><span slot=\"icon-left\" class=\"status-icon\">−</span></xv-button-v2>\n <hr />\n <xv-button-v2\n size={this.size}\n variant=\"ghost\"\n disabled={this.disabled || this.readonly}\n onClick={this.increment}\n aria-label=\"Increase\"\n ><span slot=\"icon-left\" class=\"status-icon\">+</span></xv-button-v2>\n </div>\n </div>\n </label>\n\n\n {this.helper && <p class=\"message\">{this.helper}</p>}\n {typeof this.error === 'string' ? (\n <p class=\"message error\">{this.error}</p>\n ) : typeof this.warning === 'string' ? (\n <p class=\"message warning\">{this.warning}</p>\n ) : null}\n </Host>\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 &.open {\n overflow: visible;\n }\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: normal;\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\n:host([loading]) {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\nimport { SIZE_VAR } from '../../../types/enum';\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 @Prop({ reflect: true }) loading: boolean = false;\n @Prop() name?: number | string;\n\n render() {\n return (\n <Host disabled={this.disabled} name={this.name}>\n {this.loading ? <xv-loader-v2 size={SIZE_VAR.LG} /> : <slot />}\n </Host>\n );\n }\n}\n","$tag-name: xv-table-v2;\n\n:host {\n --xv-table-min-height: 51.11px;\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 &_wrapper {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow-x: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--layer-accent-03) transparent;\n ::slotted(*) {\n min-width: 1000px;\n }\n }\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 pointer-events: none;\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 &_loading {\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: var(--xv-table-min-height, 51.11px);\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.8);\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 --xv-table-min-height: 35.1px;\n}\n:host([size=\"sm\"]) {\n --xv-table-padding-y: 10px;\n --xv-table-min-height: 41.11px;\n}\n:host([size=\"lg\"]) {\n --xv-table-padding-y: 21px;\n --xv-table-min-height: 63.09px;\n}\n:host([size=\"xl\"]) {\n --xv-table-padding-y: 31px;\n --xv-table-min-height: 78.77px;\n}\n// endregion\n","import { Component, Host, h, Element, Prop, State, Listen, Fragment, Watch } 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 }) loading?: 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('checkedChange')\n handleCheckedChange({ 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 @Watch('colsSize')\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 <div class=\"xv-table_wrapper\">\n <slot />\n\n <slot name=\"footer\" />\n </div>\n\n {!!this.loading && (\n <div class=\"xv-table_loading\">\n <xv-loader-v2 size={SIZE_VAR.LG} />\n </div>\n )}\n </div>\n </Host>\n );\n }\n\n componentWillLoad() {\n this.setColsSizeTemplate();\n }\n}\n",":host {\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:host([multiline]) {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n white-space: initial;\n padding-bottom: 1px; // overflow some symbols on bottom\n padding-top: 0;\n line-height: 1.2;\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 { XVTableSortDto } from '../_vars';\nimport { forEach, uidGenerator } from '../../../utils/utils';\nimport { XV_SORT_DIR } from '../../../types/enum';\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 }) multiline?: boolean;\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<XVTableSortDto>;\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><slot /></Host>\n );\n }\n}\n","import { XV_SORT_DIR } from '../../types/enum';\n\nexport 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 const XV_EXPANDABLE_KEY = 'expandable';\nexport const XV_TABLE_TAG = 'xv-table-v2';\n\nexport interface XVTableSortDto {\n name?: string;\n value: XV_SORT_DIR;\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 pointer-events: none;\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 grid-template-columns: var(--xv-table-cols-template, repeat(auto-fit, minmax(0, 1fr)));\n border-bottom: 1px solid #E3E3E3;\n border-right: 1px solid #E3E3E3;\n border-left: 1px solid #E3E3E3;\n min-height: var(--xv-table-min-height);\n align-items: center;\n align-content: center;\n transition: .25s ease-in-out background-color;\n .cell-control {\n min-height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\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 @Event({ eventName: 'checkedChange' }) checkedChange: EventEmitter<SelectRowDto>;\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.checkedChange.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 if (!checked && this.partial) this.partial = checked;\n\n if (!this.name) this.name = uidGenerator();\n this.selectRow.emit({\n name: this.name,\n value: this.value,\n checked: checked,\n partial: this.partial,\n header: this.header,\n expandable: this.el.getAttribute('slot') === XV_EXPANDABLE_KEY,\n });\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 position: relative;\n display: flex;\n flex-wrap: nowrap;\n &_container {\n display: flex;\n flex: 1 1 auto;\n white-space: nowrap;\n overflow-x: auto;\n scroll-behavior: smooth;\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n &_tab {\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-visible {\n outline: none;\n border: 2px solid $tab-border-active-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-visible {\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 &_btn {\n outline: none;\n width: 40px;\n height: 40px;\n background: none;\n border: none;\n cursor: pointer;\n position: relative;\n transition: 0.25s ease-in-out opacity;\n\n &:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: 0;\n height: 0;\n border: solid currentColor;\n border-width: 0 2px 2px 0;\n display: inline-block;\n padding: 5px;\n transform: translate(-50%, -50%) rotate(45deg);\n }\n\n &:active {\n opacity: 0.3;\n }\n\n &.prev:before {\n transform: translate(-50%, -50%) rotate(135deg);\n }\n &.next:before {\n transform: translate(-50%, -50%) rotate(-45deg);\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 display: none;\n width: 100%;\n pointer-events: none;\n }\n\n ::slotted(#{$tab-tag}.active) {\n display: contents;\n pointer-events: auto;\n }\n\n .xv-tabs_empty {\n display: block;\n text-align: center;\n margin: 20px auto;\n font-size: var(--fz-xl);\n color: var(--text-primary);\n }\n}\n\n:host([loading]) {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 300px;\n}\n","import { Component, Host, h, Element, Prop, Event, EventEmitter, State, Listen } from '@stencil/core';\nimport { TAB_TAGS, TABS_VATIANT } from './_vars';\nimport { SIZE_VAR } from '../../types/enum';\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 | string = 0;\n /**\n * Emit event to outside\n */\n @Event() activeChange: EventEmitter<number | string>;\n /**\n * Show loader\n */\n @Prop({ reflect: true }) loading?: boolean;\n /**\n * Variant of tabs from TABS_VATIANT enum\n */\n @Prop() variant: TABS_VATIANT = TABS_VATIANT.DEFAULT;\n /**\n * Message when have no tabs\n */\n @Prop() emptyMessage?: string;\n /**\n * local variable for tab labels collection\n */\n @State() tabElements: HTMLElement[] = [];\n /**\n * Is show arrows for scroll\n */\n @State() showArrows: boolean = false;\n\n @Listen('resize', { target: 'window' })\n updateArrowVisibility() {\n const container = this.el.shadowRoot?.querySelector('.tab-headers_container') as HTMLElement | null;\n if (!container) return;\n\n this.showArrows = container.scrollWidth > container.clientWidth;\n }\n\n private collectTabs = () => {\n if (!this.tabElements.length) {\n this.tabElements = Array.from(this.el.querySelectorAll(TAB_TAGS.TAB));\n this.tabElements.forEach((tab) => {\n if (tab.hasAttribute('name') && !this.active) {\n this.active = tab.getAttribute('name');\n }\n })\n\n setTimeout(() => this.updateArrowVisibility(), 100);\n }\n }\n\n private updateTabClasses() {\n this.tabElements.forEach((tab, i) => {\n tab.classList.toggle(\n 'active',\n (tab.getAttribute('name') || `${i}`) === `${this.active}`\n );\n });\n }\n\n private handleTabClick(active: string | number) {\n if (active === this.active) return;\n\n this.active = active;\n this.activeChange.emit(Number(this.active) || this.active);\n this.scrollToActiveTab();\n }\n\n private scrollToActiveTab() {\n if (!this.showArrows) return;\n\n // wait next JS tik\n setTimeout(() => {\n this.el.shadowRoot\n .querySelector('.tab-headers_tab.active')\n .scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' });\n });\n }\n\n private setTab(count: number = 1) {\n const currentIdx = this.tabElements.findIndex(\n (tab, i) =>\n (tab.getAttribute('name') || `${i}`) === `${this.active}`\n );\n const nextIdx = currentIdx + count;\n\n if (nextIdx < 0 || nextIdx >= this.tabElements.length) return;\n\n const nextTab = this.tabElements[nextIdx];\n\n if (!nextTab || nextTab.hasAttribute('disabled')) return;\n\n this.handleTabClick(nextTab.getAttribute('name') || nextIdx);\n }\n\n render() {\n if (this.loading) {\n return (\n <Host class=\"xv-tabs\" variant={this.variant}>\n <xv-loader-v2 size={SIZE_VAR.XL} />\n </Host>\n )\n }\n\n return (\n <Host class=\"xv-tabs\" variant={this.variant}>\n <div class=\"tab-headers\" role=\"tablist\">\n <button\n hidden={!this.showArrows || !this.tabElements?.length}\n aria-label=\"Previous\"\n class=\"tab-headers_btn prev\"\n onClick={() => this.setTab(-1)}\n />\n <div class=\"tab-headers_container\">\n {this.tabElements?.length ? this.tabElements.map((tab, index) => (\n <button\n role=\"tab\"\n disabled={!!tab.getAttribute('disabled') || !!(tab as any)?.disabled}\n class={{\n 'tab-headers_tab': true,\n active: (tab.getAttribute('name') || `${index}`) === `${this.active}`,\n }}\n onClick={() => this.handleTabClick(tab.getAttribute('name') || `${index}`)}\n >\n {tab.getAttribute('label') || `Tab ${index + 1}`}\n </button>\n )) : this.emptyMessage && <p class=\"xv-tabs_empty\">{this.emptyMessage}</p>}\n </div>\n <button\n aria-label=\"Next\"\n hidden={!this.showArrows || !this.tabElements?.length}\n class=\"tab-headers_btn next\"\n onClick={() => this.setTab(1)}\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 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",":host {\n display: inline-block;\n text-align: left;\n .control {\n &_label {\n display: block;\n margin-bottom: var(--spacing-03);\n color: var(--text-secondary, #515151);\n font-family: var(--ff-body, Tahoma);\n font-size: var(--fz-sm, 12px);\n font-style: normal;\n font-weight: 700;\n line-height: var(--fz-md);\n letter-spacing: 0.32px;\n }\n\n &_input {\n display: flex;\n border: 1px solid var(--border-subtle-01);\n outline: 2px solid transparent;\n background-color: transparent;\n border-radius: 3px;\n transition: 250ms ease-in-out border-color, 250ms ease-in-out outline-color;\n &:hover {\n border-color: var(--border-subtle-selected-01);\n }\n\n &:focus-within {\n outline-color: var(--focus);\n }\n\n &.error {\n outline-color: var(--support-error);\n }\n\n &.readonly {\n border-radius: 0;\n border-top-width: 0;\n border-left-width: 0;\n border-right-width: 0;\n outline-color: transparent;\n }\n\n input[type=\"text\"] {\n flex: 1;\n border: none;\n outline: none;\n -moz-appearance: textfield;\n background-color: transparent;\n margin: 0;\n padding-block: 0;\n padding-inline: var(--spacing-05);\n box-sizing: border-box;\n color: var(--text-primary);\n min-width: 20px;\n font-style: normal;\n font-weight: 400;\n letter-spacing: 0.16px;\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n\n &__icons {\n display: inline-flex;\n align-items: stretch;\n column-gap: 2px;\n padding-right: var(--spacing-05);\n .status-icon {\n display: inline-flex;\n align-items: center;\n align-self: center;\n font-size: 1.35em;\n &.error {\n background-color: var(--support-error);\n color: white;\n width: 16px;\n height: 16px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: bold;\n align-items: center;\n justify-content: center;\n }\n &.warning {\n color: var(--support-warning);\n }\n }\n\n hr {\n border: none;\n outline: none;\n width: 2px;\n height: 60%;\n align-self: center;\n background-color: var(--border-subtle-01);\n display: inline-flex;\n }\n }\n\n &.xs {\n height: 16px;\n }\n &.sm {\n height: 32px;\n }\n &.md {\n height: 40px;\n }\n &.lg {\n height: 48px;\n }\n &.xl {\n height: 60px;\n }\n }\n }\n\n .message {\n margin: var(--spacing-02) 0 0;\n color: var(--text-helper, #646464);\n font-size: var(--fz-sm, 12px);\n font-style: normal;\n font-weight: 400;\n line-height: var(--fz-md, 16px);\n letter-spacing: 0.32px;\n &.error {\n color: var(--text-error);\n }\n &.warning {\n color: var(--text-secondary, #515151);\n }\n }\n}\n\n:host(.disabled) {\n cursor: not-allowed;\n\n .control_label,\n .control_input input[type=\"text\"],\n .control_input input[type=\"text\"]::placeholder,\n .message:not(.error) {\n color: var(--text-disabled);\n cursor: not-allowed;\n }\n\n .control_input__icons,\n .message.error {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n:host([block]) {\n display: block;\n .control_input input[type=\"text\"] {\n width: 100%;\n }\n}\n","import { AttachInternals, Component, h, Host, Prop, Event, EventEmitter } from '@stencil/core';\nimport { SIZE_VAR } from '../../types/enum';\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 @Prop() type: 'text' | 'email' | 'password' | 'url' | 'tel' = 'text';\n @Prop() label: string;\n @Prop({ reflect: true }) placeholder?: string;\n @Prop({ reflect: true }) name: string;\n @Prop({ mutable: true }) value: string = '';\n @Event({ eventName: 'valueChange' }) valueChange: EventEmitter<string>;\n @Prop() autocomplete?: string;\n @Prop() helper?: string;\n @Prop() error?: string | boolean;\n @Prop() warning?: string | boolean;\n @Prop() readonly?: boolean;\n @Prop() disabled?: boolean;\n @Prop() loading: boolean = false;\n @Prop() block?: boolean;\n @Prop({ reflect: true }) size: SIZE_VAR = SIZE_VAR.MD;\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.valueChange.emit(this.value);\n this.internals.setFormValue(target.value);\n }\n\n render() {\n return (\n <Host class={{ disabled: !!this.disabled }}>\n <label class=\"control\">\n {this.label && <span class=\"control_label\">{this.label}</span>}\n\n <div class={{\n 'control_input': true,\n readonly: !!this.readonly,\n [this.size]: true,\n error: !!this.error,\n warning: !!this.warning,\n }}>\n <input\n autocomplete={this.autocomplete}\n type={this.type}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readonly={this.readonly}\n onInput={this.handleInput}\n name={this.name}\n value={this.value}\n />\n\n <div class=\"control_input__icons\">\n {this.loading && <xv-loader-v2 size={SIZE_VAR.XS} />}\n {!!this.error ? (\n <span class=\"status-icon error\" aria-hidden=\"true\">!</span>\n ) : !!this.warning ? (\n <span class=\"status-icon warning\" aria-hidden=\"true\">⚠</span>\n ) : null}\n </div>\n </div>\n </label>\n\n\n {this.helper && <p class=\"message\">{this.helper}</p>}\n {typeof this.error === 'string' ? (\n <p class=\"message error\">{this.error}</p>\n ) : typeof this.warning === 'string' ? (\n <p class=\"message warning\">{this.warning}</p>\n ) : null}\n </Host>\n );\n }\n}\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";",":host {\n display: inline-block;\n font-family: inherit;\n\n .trigger {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n transition: 250ms ease-in-out color;\n color: var(--icon-secondary);\n\n &_icon {\n color: inherit;\n }\n\n ::slotted([slot=\"trigger\"]) {\n transition: 250ms ease-in-out color;\n color: var(--icon-secondary);\n }\n\n &:hover,\n &:active,\n ::slotted([slot=\"trigger\"]:hover),\n ::slotted([slot=\"trigger\"]:active) {\n color: var(--icon-primary);\n }\n\n &:focus,\n ::slotted([slot=\"trigger\"]:focus) {\n color: var(--focus);\n }\n }\n\n .popover {\n opacity: 1;\n z-index: 1000;\n position: absolute;\n background-color: var(--background-inverse);\n color: var(--text-inverse);\n border-radius: 4px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);\n max-width: 288px;\n font-size: 0.875rem;\n line-height: 1.5;\n margin-top: 8px;\n flex-direction: column;\n display: flex;\n\n &[data-popper-placement^='top'] .popover-tip {\n bottom: -4px;\n }\n &[data-popper-placement^='bottom'] .popover-tip {\n top: -4px;\n }\n &[data-popper-placement^='left'] .popover-tip {\n right: -4px;\n }\n &[data-popper-placement^='right'] .popover-tip {\n left: -4px;\n }\n\n .popover-tip {\n width: 10px;\n height: 10px;\n background-color: transparent;\n z-index: -1;\n &:before {\n content: '';\n transform: rotate(45deg);\n background-color: var(--background-inverse);\n width: inherit;\n height: inherit;\n display: inline-block;\n }\n }\n\n .popover-content {\n padding: var(--gap-md);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-04);\n\n ::slotted([slot=\"header\"]) {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--text-secondary);\n }\n\n ::slotted([slot=\"body\"]) {\n font-size: 0.875rem;\n color: var(--text-inverse);\n }\n\n ::slotted([slot=\"footer\"]) {\n font-size: 0.75rem;\n color: var(--text-inverse);\n opacity: 0.8;\n }\n }\n }\n}\n\n:host(:not([open])) {\n .popover {\n opacity: 0;\n z-index: -1;\n user-select: none;\n pointer-events: none;\n }\n}\n","import { h, Event, Prop, Listen, Watch, Method, Element, Component, Host, EventEmitter } from '@stencil/core';\nimport { createPopper, Instance, Placement } from '@popperjs/core';\n\n@Component({\n tag: 'xv-toggle-tip',\n styleUrl: 'xv-toggle-tip.scss',\n shadow: true,\n})\nexport class XvToggleTip {\n @Element() el: HTMLElement;\n\n @Prop({ reflect: true, mutable: true }) open: boolean = false;\n @Prop() position: Placement = 'auto';\n @Event({ eventName: 'openChange' }) openChange: EventEmitter<boolean>;\n\n private triggerEl!: HTMLElement;\n private popoverEl!: HTMLElement;\n private popperInstance?: Instance;\n\n @Watch('open')\n openChangeHandle() {\n if (this.open) {\n requestAnimationFrame(() => this.createPopper());\n } else {\n this.destroyPopper();\n }\n this.openChange.emit(this.open);\n }\n\n @Listen('click', { target: 'document' })\n handleClickOutside(e: MouseEvent) {\n if (this.open && !this.el.contains(e.target as Node)) {\n this.open = false;\n }\n };\n\n @Listen('keydown')\n handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape' && this.open) {\n this.open = false;\n }\n };\n\n @Method()\n async setPopover(open: boolean) {\n if (open === this.open) return;\n this.open = open;\n\n return this.open;\n };\n\n private createPopper() {\n if (!this.triggerEl || !this.popoverEl) {\n console.warn('XvToggleTip can`t find the trigger or popover container!');\n return;\n }\n\n this.popperInstance = createPopper(this.triggerEl, this.popoverEl, {\n placement: this.position,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: 'viewport',\n padding: 8,\n },\n },\n ],\n });\n };\n\n private destroyPopper = () => {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = undefined;\n }\n };\n\n render() {\n return (\n <Host class=\"xv-toggle-tip\">\n <div\n class=\"trigger\"\n role=\"button\"\n tabindex=\"0\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls=\"popover\"\n onClick={() => this.setPopover(!this.open)}\n ref={(el) => (this.triggerEl = el)}\n >\n <slot name=\"trigger\">\n <svg class=\"trigger_icon\" 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 </div>\n\n <div\n class={{ popover: true }}\n role=\"tooltip\"\n tabindex=\"-1\"\n ref={(el) => (this.popoverEl = el)}\n >\n <div class=\"popover-tip\" part=\"tip\" data-popper-arrow=\"\"></div>\n <div class=\"popover-content\">\n <slot name=\"header\"></slot>\n <slot name=\"body\"></slot>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </Host>\n );\n }\n\n disconnectedCallback() {\n this.destroyPopper();\n }\n}\n",".xv-tooltip-wrapper {\n position: relative;\n\n &__dashed {\n text-decoration-line: underline;\n text-decoration-style: dashed;\n text-decoration-color: var(--text-secondary, #515151);\n text-underline-offset: 4px;\n }\n\n &__block {\n display: block;\n }\n}\n","import { Component, Host, h, Prop, Element, Listen } from '@stencil/core';\nimport { createPopper, Placement, Instance } from '@popperjs/core';\n\n@Component({\n tag: 'xv-tooltip-v2',\n styleUrl: 'xv-tooltip.scss',\n shadow: false,\n})\nexport class XvTooltip {\n @Element() el: HTMLElement;\n\n @Prop() message: string;\n @Prop() position: Placement = 'auto';\n @Prop() block?: boolean;\n @Prop() dashed?: boolean;\n\n private tooltipEl: HTMLElement;\n private popperInstance: Instance;\n\n @Listen('mouseenter')\n onMouseEnter() {\n this.createTooltip();\n }\n\n @Listen('mouseleave')\n onMouseLeave() {\n this.destroyTooltip();\n }\n\n private createTooltip() {\n if (!this.message) return;\n\n if (!this.tooltipEl) {\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.className = 'xv-tooltip';\n this.tooltipEl.role = 'tooltip';\n this.tooltipEl.textContent = this.message;\n document.body.appendChild(this.tooltipEl);\n }\n\n this.popperInstance = createPopper(this.el, this.tooltipEl, {\n placement: this.position,\n modifiers: [{ name: 'offset', options: { offset: [0, 8] } }],\n });\n }\n\n private destroyTooltip() {\n if (this.tooltipEl) {\n document.body.removeChild(this.tooltipEl);\n this.tooltipEl = null;\n }\n this.popperInstance?.destroy();\n this.popperInstance = null;\n }\n\n disconnectedCallback() {\n this.destroyTooltip();\n }\n\n render() {\n return (\n <Host\n role=\"tooltip\"\n class={{\n 'xv-tooltip-wrapper': true,\n [`xv-tooltip-wrapper__block`]: !!this.block,\n [`xv-tooltip-wrapper__dashed`]: !!this.dashed,\n }}>\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":"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","ignoreList":[]}