@haiilo/catalyst 2.1.2 → 2.3.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/utils/setDefault.ts","src/components/cat-alert/cat-alert.scss?tag=cat-alert&encapsulation=shadow","src/components/cat-alert/cat-alert.tsx","src/utils/load-img.ts","src/components/cat-avatar/cat-avatar.scss?tag=cat-avatar&encapsulation=shadow","src/components/cat-avatar/cat-avatar.tsx","src/components/cat-badge/cat-badge.scss?tag=cat-badge&encapsulation=shadow","src/components/cat-badge/cat-badge.tsx","src/utils/breakpoints.ts","src/utils/platform.ts","src/utils/media-matcher.ts","src/components/cat-button/cat-button.scss?tag=cat-button&encapsulation=shadow","src/components/cat-button/cat-button.tsx","src/components/cat-card/cat-card.scss?tag=cat-card&encapsulation=shadow","src/components/cat-card/cat-card.tsx","src/components/cat-form-hint/cat-form-hint.tsx","src/components/cat-checkbox/cat-checkbox.scss?tag=cat-checkbox&encapsulation=shadow","src/components/cat-checkbox/cat-checkbox.tsx","../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../tokens/dist/js/variables.js","src/components/cat-dropdown/cat-dropdown.scss?tag=cat-dropdown&encapsulation=shadow","src/components/cat-dropdown/cat-dropdown.tsx","src/components/cat-icon/cat-icon.scss?tag=cat-icon&encapsulation=shadow","src/components/cat-icon/cat-icon.tsx","src/components/cat-input/cat-input.scss?tag=cat-input&encapsulation=shadow","src/components/cat-input/cat-input.tsx","src/components/cat-pagination/cat-pagination.scss?tag=cat-pagination&encapsulation=shadow","src/components/cat-pagination/cat-pagination.tsx","src/components/cat-radio/cat-radio.scss?tag=cat-radio&encapsulation=shadow","src/components/cat-radio/cat-radio.tsx","src/components/cat-radio-group/cat-radio-group.scss?tag=cat-radio-group&encapsulation=shadow","src/components/cat-radio-group/cat-radio-group.tsx","node_modules/rxjs/dist/esm/internal/util/isFunction.js","node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","node_modules/rxjs/dist/esm/internal/util/arrRemove.js","node_modules/rxjs/dist/esm/internal/Subscription.js","node_modules/rxjs/dist/esm/internal/config.js","node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","node_modules/rxjs/dist/esm/internal/util/noop.js","node_modules/rxjs/dist/esm/internal/NotificationFactories.js","node_modules/rxjs/dist/esm/internal/util/errorContext.js","node_modules/rxjs/dist/esm/internal/Subscriber.js","node_modules/rxjs/dist/esm/internal/symbol/observable.js","node_modules/rxjs/dist/esm/internal/util/identity.js","node_modules/rxjs/dist/esm/internal/util/pipe.js","node_modules/rxjs/dist/esm/internal/Observable.js","node_modules/rxjs/dist/esm/internal/util/lift.js","node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","node_modules/rxjs/dist/esm/internal/Subject.js","node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","node_modules/rxjs/dist/esm/internal/scheduler/Action.js","node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","node_modules/rxjs/dist/esm/internal/Scheduler.js","node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","node_modules/rxjs/dist/esm/internal/scheduler/async.js","node_modules/rxjs/dist/esm/internal/observable/empty.js","node_modules/rxjs/dist/esm/internal/util/isScheduler.js","node_modules/rxjs/dist/esm/internal/util/args.js","../node_modules/tslib/tslib.es6.js","node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","node_modules/rxjs/dist/esm/internal/util/isPromise.js","node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","node_modules/rxjs/dist/esm/internal/symbol/iterator.js","node_modules/rxjs/dist/esm/internal/util/isIterable.js","node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","node_modules/rxjs/dist/esm/internal/operators/observeOn.js","node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","node_modules/rxjs/dist/esm/internal/observable/from.js","node_modules/rxjs/dist/esm/internal/observable/of.js","node_modules/rxjs/dist/esm/internal/util/EmptyError.js","node_modules/rxjs/dist/esm/internal/util/isDate.js","node_modules/rxjs/dist/esm/internal/operators/map.js","node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","node_modules/rxjs/dist/esm/internal/operators/concatAll.js","node_modules/rxjs/dist/esm/internal/observable/concat.js","node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","node_modules/rxjs/dist/esm/internal/observable/timer.js","node_modules/rxjs/dist/esm/internal/observable/merge.js","node_modules/rxjs/dist/esm/internal/operators/filter.js","node_modules/rxjs/dist/esm/internal/operators/catchError.js","node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","node_modules/rxjs/dist/esm/internal/operators/debounce.js","node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","node_modules/rxjs/dist/esm/internal/operators/take.js","node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","node_modules/rxjs/dist/esm/internal/operators/mapTo.js","node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","node_modules/rxjs/dist/esm/internal/operators/delay.js","node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","node_modules/rxjs/dist/esm/internal/operators/first.js","node_modules/rxjs/dist/esm/internal/operators/scan.js","node_modules/rxjs/dist/esm/internal/operators/startWith.js","node_modules/rxjs/dist/esm/internal/operators/switchMap.js","node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","node_modules/rxjs/dist/esm/internal/operators/tap.js","src/components/cat-scrollable/cat-scrollable.scss?tag=cat-scrollable&encapsulation=shadow","src/components/cat-scrollable/cat-scrollable.tsx","../node_modules/autosize-input/index.js","src/components/cat-select/cat-select.scss?tag=cat-select&encapsulation=shadow","src/components/cat-select/cat-select.tsx","src/components/cat-select-demo/cat-select-demo.tsx","src/components/cat-skeleton/cat-skeleton.scss?tag=cat-skeleton&encapsulation=shadow","src/components/cat-skeleton/cat-skeleton.tsx","src/components/cat-spinner/cat-spinner.scss?tag=cat-spinner&encapsulation=shadow","src/components/cat-spinner/cat-spinner.tsx","src/components/cat-tab/cat-tab.scss?tag=cat-tab&encapsulation=shadow","src/components/cat-tab/cat-tab.tsx","src/components/cat-tabs/cat-tabs.scss?tag=cat-tabs&encapsulation=shadow","src/components/cat-tabs/cat-tabs.tsx","../node_modules/autosize/dist/autosize.esm.js","src/components/cat-textarea/cat-textarea.scss?tag=cat-textarea&encapsulation=shadow","src/components/cat-textarea/cat-textarea.tsx","src/components/cat-toggle/cat-toggle.scss?tag=cat-toggle&encapsulation=shadow","src/components/cat-toggle/cat-toggle.tsx","src/utils/is-touch-screen.ts","src/components/cat-tooltip/cat-tooltip.scss?tag=cat-tooltip&encapsulation=shadow","src/components/cat-tooltip/cat-tooltip.tsx"],"names":["setAttributeDefault","host","attr","value","hostElement","hasAttribute","setAttribute","String","setPropertyDefault","prop","setProperty","catAlertCss","CatAlert","[object Object]","hostRef","this","mapIcon","Map","mapRole","color","noIcon","get","h","Host","size","icon","class","loadImg","src","Promise","resolve","reject","image","Image","addEventListener","catAvatarCss","CatAvatar","round","label","then","backgroundImage","undefined","onSrcChanged","log","warn","url","href","target","urlTarget","style","cssStyle","cssClass","aria-label","content","getInitials","background-image","avatar","avatar-round","Boolean","_a","initials","_b","split","map","n","join","catBadgeCss","CatBadge","variant","pulse","_breakpoints","Breakpoints","xs","s","m","l","xl","isBreakpoint","includes","hasV8BreakIterator","Intl","v8BreakIterator","Platform","EDGE","test","navigator","userAgent","TRIDENT","BLINK","window","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","mediaQueriesForWebkitCompatibility","Set","mediaQueryStyleNode","MediaMatcher","_platform","_matchMedia","matchMedia","bind","query","createEmptyStyleRule","has","document","createElement","head","appendChild","sheet","insertRule","add","e","error","catButtonCss","CatButton","_iconOnly","active","disabled","loading","submit","noEllipsis","iconOnly","iconRight","mediaQueryList","removeEventListener","mediaQueryListener","mediaMatcher","event","matches","onIconOnlyChanged","isIconButton","a11yLabel","preventDefault","stopImmediatePropagation","options","button","focus","blur","click","ref","el","aria-disabled","aria-current","a11yCurrent","id","buttonId","part","cat-button","cat-button-active","cat-button-icon","cat-button-round","cat-button-loading","cat-button-disabled","cat-button-ellipsed","onClick","onFocus","onBlur","type","name","iconSize","spinnerSize","hasPrefixIcon","hasSuffixIcon","catClick","emit","catFocus","catBlur","catCardCss","CatCard","CatFormHint","props","hint","slottedHint","Array","isArray","item","catCheckboxCss","nextUniqueId","CatCheckbox","hasSlottedLabel","checked","indeterminate","labelHidden","required","labelLeft","input","querySelector","htmlFor","is-hidden","is-disabled","label-left","onInput","aria-hidden","viewBox","points","hintSection","hasSlottedHint","catChange","getSide","placement","getAlignment","getMainAxisFromPlacement","getLengthFromAxis","axis","computeCoordsFromPlacement","_ref","rtl","reference","floating","commonX","x","width","commonY","y","height","mainAxis","length","commonAlign","side","isVertical","coords","computePosition","async","config","strategy","middleware","platform","isRTL","rects","getElementRects","statefulPlacement","middlewareData","resetCount","i","fn","nextX","nextY","data","reset","initialPlacement","elements","expandPaddingObject","padding","top","right","bottom","left","getSideObjectFromPadding","rectToClientRect","rect","detectOverflow","middlewareArguments","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","altContext","element","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","offsetParent","getOffsetParent","hash$1","getOppositePlacement","replace","matched","getAlignmentSides","alignment","mainAlignmentSide","main","cross","hash","start","end","getOppositeAlignmentPlacement","getExpandedPlacements","oppositePlacement","flip","_middlewareData$flip","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","flipAlignment","detectOverflowOptions","isBasePlacement","placements","overflow","overflows","overflowsData","push","every","_middlewareData$flip$","_middlewareData$flip2","nextIndex","index","nextPlacement","resetPlacement","_overflowsData$map$so","d","filter","reduce","acc","sort","a","b","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","alignmentAxis","offset","diffCoords","isWindow","location","alert","setInterval","getWindow","node","ownerDocument","defaultView","getComputedStyle","getNodeName","nodeName","toLowerCase","getUAString","uaData","userAgentData","brands","brand","version","isHTMLElement","HTMLElement","Element","isNode","Node","isShadowRoot","ShadowRoot","OwnElement","isOverflowElement","overflowX","overflowY","display","isTableElement","isContainingBlock","isFirefox","css","transform","perspective","willChange","some","contain","isLayoutViewport","isLastTraversableNode","min","Math","max","getBoundingClientRect","includeScale","isFixedStrategy","_win$visualViewport$o","_win$visualViewport","_win$visualViewport$o2","_win$visualViewport2","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","win","addVisualOffsets","visualViewport","offsetLeft","offsetTop","documentElement","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getWindowScrollBarX","isScaled","getRectRelativeToOffsetParent","isOffsetParentAnElement","scroll","offsets","offsetRect","clientLeft","clientTop","getParentNode","assignedSlot","parentNode","getTrueOffsetParent","position","getContainingBlock","currentNode","parent","getDimensions","getViewportRect","html","clientWidth","clientHeight","layoutViewport","getDocumentRect","_element$ownerDocumen","body","scrollWidth","scrollHeight","direction","getNearestOverflowAncestor","getOverflowAncestors","list","_node$ownerDocument","scrollableAncestor","isBody","concat","updatedList","contains","child","rootNode","getRootNode","next","getNearestParentCapableOfEscapingClipping","clippingAncestors","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingParent","getClippingAncestors","nearestEscapableParent","clipperElement","mainClippingAncestors","firstClippingAncestor","clippingRect","accRect","clippingAncestor","getClientRects","from","autoUpdate","update","ancestorScroll","_ancestorScroll","ancestorResize","elementResize","animationFrame","ancestors","forEach","ancestor","passive","observer","initialUpdate","ResizeObserver","observe","frameId","prevRefRect","frameLoop","nextRefRect","requestAnimationFrame","_observer","disconnect","cancelAnimationFrame","computePosition$1","timeTransitionS","catDropdownCss","CatDropdown","isOpen","noAutoClose","trigger","initTrigger","toggle","composedPath","close","open","setTimeout","classList","catOpen","trap","updateContainerElements","focusTrap.createFocusTrap","tabbableOptions","getShadowRoot","allowOutsideClick","clickOutsideDeactivates","onPostDeactivate","activate","remove","deactivate","catClose","keyListener","key","targetElements","tabbable","includeContainer","activeElement","firstTabbable","activeIdx","indexOf","activeOff","targetIdx","triggerSlot","contentId","overflow-auto","findTrigger","elems","assignedElements","call","elem","shift","_c","Error","OFFSET","dataset","Object","assign","catIconCss","CatIcon","iconRegistry","CatIconRegistry","getInstance","innerHTML","getIcon","catInputCss","CatInput","clearable","readonly","hidden","i18n","t","input-wrapper","input-round","input-disabled","textPrefix","has-clearable","autocomplete","autoComplete","maxlength","maxLength","minlength","minLength","placeholder","icon-only","a11y-label","clear","textSuffix","catPaginationCss","CatPagination","page","pageCount","activePadding","sidePadding","compact","iconPrev","iconNext","role","isFirst","isLast","pages","result","minPage","minActivepage","maxPage","maxActivepage","addSeq","set","_start","clamp","_end","fill","_","num","catRadioCss","CatRadio","aria-checked","onChange","catRadioGroupCss","CatRadioGroup","catRadioGroup","newName","catRadio","newValue","updateTabIndex","querySelectorAll","onNameChanged","onValueChanged","onDisabledChanged","onLabelLeftChanged","findIndex","doFocus","shadowRoot","catRadioElement","find","relatedTarget","checkedRadioIndex","isFunction","createErrorClass","createImpl","_super","instance","stack","ctorFunc","prototype","create","constructor","UnsubscriptionError","UnsubscriptionErrorImpl","errors","message","err","toString","arrRemove","arr","splice","Subscription","initialTeardown","closed","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","EMPTY","empty","EMPTY_SUBSCRIPTION","isSubscription","unsubscribe","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","timeoutProvider","handler","timeout","args","delegate","handle","clearTimeout","reportUnhandledError","noop","COMPLETE_NOTIFICATION","createNotification","errorNotification","nextNotification","kind","errorContext","cb","Subscriber","destination","super","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","handleStoppedNotification","_next","_error","_complete","_bind","Function","thisArg","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context","defaultErrorHandler","notification","subscriber","observable","Symbol","identity","pipeFromArray","fns","piped","prev","Observable","subscribe","_subscribe","operator","source","isSubscriber","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","isObserver","hasLift","lift","operate","init","liftedSource","TypeError","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","ObjectUnsubscribedError","ObjectUnsubscribedErrorImpl","Subject","currentObservers","observers","hasError","thrownError","subject","AnonymousSubject","_throwIfClosed","observed","_checkFinalizedStatuses","_innerSubscribe","dateTimestampProvider","Date","now","Action","scheduler","work","state","delay","intervalProvider","clearInterval","AsyncAction","pending","recycleAsyncId","requestAsyncId","_id","flush","_scheduler","_execute","_delay","errored","errorValue","actions","Scheduler","schedulerActionCtor","schedule","AsyncScheduler","SchedulerAction","_active","_scheduled","action","execute","asyncScheduler","isScheduler","last","popScheduler","pop","popNumber","defaultValue","__awaiter","_arguments","P","generator","adopt","fulfilled","step","rejected","done","apply","__values","o","iterator","__await","v","__asyncGenerator","asyncIterator","g","q","verb","resume","settle","r","fulfill","f","__asyncValues","isArrayLike","isPromise","isInteropObservable","isAsyncIterable","obj","createInvalidObservableTypeError","getSymbolIterator","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","arguments","readableStreamLikeToAsyncGenerator_1","reader","getReader","read","releaseLock","isReadableStreamLike","innerFrom","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","obs","array","promise","iterable","asyncIterable","process","catch","asyncIterable_1","asyncIterable_1_1","e_1","e_1_1","return","executeSchedule","parentSubscription","repeat","scheduleSubscription","observeOn","subscribeOn","scheduleObservable","pipe","schedulePromise","scheduleArray","scheduleIterable","scheduleAsyncIterable","scheduleReadableStreamLike","scheduled","of","EmptyError","EmptyErrorImpl","isValidDate","isNaN","project","callOrApply","mapOneOrManyArgs","mergeInternals","concurrent","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeMap","resultSelector","Infinity","ii","mergeAll","concatAll","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","eventName","isEventTarget","methodName","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","addListener","removeListener","on","off","timer","dueTime","intervalOrScheduler","intervalDuration","due","merge","sources","predicate","catchError","selector","innerSub","syncUnsub","handledResult","scanInternals","accumulator","seed","hasSeed","emitOnNext","emitBeforeComplete","hasState","debounce","durationSelector","hasValue","lastValue","durationSubscriber","defaultIfEmpty","take","count","seen","ignoreElements","mapTo","delayWhen","delayDurationSelector","subscriptionDelay","duration","distinctUntilChanged","comparator","keySelector","defaultCompare","previousKey","first","currentKey","throwIfEmpty","errorFactory","defaultErrorFactory","hasDefaultValue","scan","startWith","values","switchMap","innerSubscriber","innerIndex","outerIndex","takeUntil","notifier","takeWhile","inclusive","tap","tapObserver","isUnsub","finalize","catScrollableCss","CatScrollable","destroyed","noShadowX","noShadowY","noOverflowX","noOverflowY","noOverscroll","noScrolledInit","scrolledBuffer","scrollElement","scrolled","attachEmitter","scrolledLeft","scrolledRight","scrolledBottom","scrolledTop","getScrollOffset","toggleClass","scrollWrapperElement","scrollable-content","scroll-x","scroll-y","no-overscroll","emitter","isLower","GHOST_ELEMENT_ID","characterEntities"," ","<",">","mapSpecialCharacterToCharacterEntity","specialCharacter","escapeSpecialCharacters","string","createGhostElement","ghostElement","cssText","autosizeInput","elementStyle","elementCssText","boxSizing","borderLeftWidth","borderRightWidth","fontFamily","fontFeatureSettings","fontKerning","fontSize","fontStretch","fontStyle","fontVariant","fontVariantCaps","fontVariantLigatures","fontVariantNumeric","fontWeight","letterSpacing","marginLeft","marginRight","paddingLeft","paddingRight","textIndent","textTransform","setWidth","getAttribute","getElementById","minWidth","removeChild","catSelectCss","INIT_STATE","term","isLoading","isResolving","selection","activeOptionIndex","activeSelectionIndex","CatSelect","term$","more$","multiple","tags","connector","newState","oldState","changed","option","dropdown","scrollIntoView","block","hide","idsSelected","ids","startsWith","render","tag","createTag","select","patchState","isInputFocused","onArrowKeyDown","toggleTag","selectionStart","deselect","selectionClone","_d","_e","shiftKey","show","clearButton","number$","subscription","asObservable","number","connectorSafe","retrieve","totalElements","items","toSelectItems","trim","value1","isTagSelected","unshift","select-wrapper","select-disabled","aria-expanded","isPillboxActive","aria-controls","aria-required","aria-activedescendant","activeDescendant","aria-orientation","pill","select-no-open","select-option-active","aria-selected","tabIndex","select-btn","select-btn-open","onScrolledBottom","aria-multiselectable","aria-setsize","optionsList","SKELETON_COUNT","lines","isTagOption","isOptionSelected","isSelected","getLabel","tagTextHelp","onCatChange","stopPropagation","slot","description","select-option-inner","select-option-single","initIds","initTags","data$","customId","newSelection","search","setTransparentCaret","removeTag","DROPDOWN_OFFSET","tagHint","CatSelectTest","multipleSelect","connect","console","info","firstName","lastName","desc","user","multipleSelectAvatar","floor","random","multipleSelectTagging","countryConnector","singleSelect","singleSelectAvatar","country","_f","singleSelectTagging","flexDirection","onCatBlur","countries","capital","slice","catSkeletonCss","CatSkeleton","effect","skeleton","--line-width","catSpinnerCss","CatSpinner","xmlns","cx","cy","catTabCss","CatTab","deactivated","tabClick","catTabsCss","CatTabs","buttons","tabs","activeTab","tabsAlign","newActiveTab","syncTabs","activeTabId","mutationObserver","MutationObserver","mutations","childList","attributes","subtree","tab","updateButtonsRef","cat-tab","cat-tab-active","onCatClick","delete","Event","bubbles","createEvent","initEvent","destroy","c","keys","resize","wordWrap","parseFloat","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","u","dispatchEvent","catTextareaCss","CatTextarea","rows","autosize","textarea","catToggleCss","CatToggle","isTouchDevice","maxTouchPoints","catTooltipCss","CatTooltip","showDelay","hideDelay","longTouchDuration","hideListener","triggerElement","isTabbable","tooltip","isTouchScreen","windowTouchStartListener","touchStartListener","touchEndListener","showListener","_g","aria-describedby","tooltip-hidden","tooltip-round","hideTimeout","showTimeout","showTooltip","touchTimeout"],"mappings":"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AS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,yBACTM,QAAS,YAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,YAEX,CACE19B,GAAI,KACJo9B,QAAS,iBAEX,CACEp9B,GAAI,KACJo9B,QAAS,SACTM,QAAS,YAEX,CACE19B,GAAI,KACJo9B,QAAS,kCAEX,CACEp9B,GAAI,KACJo9B,QAAS,SACTM,QAAS,uBAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,SAEX,CACE19B,GAAI,KACJo9B,QAAS,eACTM,QAAS,eAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,aAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,cAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,SACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,aACTM,QAAS,SAEX,CACE19B,GAAI,KACJo9B,QAAS,iBACTM,QAAS,eAEX,CACE19B,GAAI,KACJo9B,QAAS,2BACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,OACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,QACTM,QAAS,qBAEX,CACE19B,GAAI,KACJo9B,QAAS,QACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,mBACTM,QAAS,oBAEX,CACE19B,GAAI,KACJo9B,QAAS,0BACTM,QAAS,eAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,QACTM,QAAS,eAEX,CACE19B,GAAI,KACJo9B,QAAS,eACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,aACTM,QAAS,YAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,OACTM,QAAS,aAEX,CACE19B,GAAI,KACJo9B,QAAS,SACTM,QAAS,WAEX,CACE19B,GAAI,KACJo9B,QAAS,iBACTM,QAAS,SAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,cAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,YAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,qBACTM,QAAS,yBAEX,CACE19B,GAAI,KACJo9B,QAAS,aACTM,QAAS,QAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,SAEX,CACE19B,GAAI,KACJo9B,QAAS,QACTM,QAAS,SAEX,CACE19B,GAAI,KACJo9B,QAAS,cACTM,QAAS,gBAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,oBACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,WAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,eAEX,CACE19B,GAAI,KACJo9B,QAAS,mBACTM,QAAS,WAEX,CACE19B,GAAI,KACJo9B,QAAS,gBACTM,QAAS,YAEX,CACE19B,GAAI,KACJo9B,QAAS,eACTM,QAAS,QAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,0BAEX,CACE19B,GAAI,KACJo9B,QAAS,SACTM,QAAS,SAEX,CACE19B,GAAI,KACJo9B,QAAS,gBACTM,QAAS,WAEX,CACE19B,GAAI,KACJo9B,QAAS,mBACTM,QAAS,WAEX,CACE19B,GAAI,KACJo9B,QAAS,+BAEX,CACEp9B,GAAI,KACJo9B,QAAS,QACTM,QAAS,cAEX,CACE19B,GAAI,KACJo9B,QAAS,SACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,WAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,QACTM,QAAS,SAEX,CACE19B,GAAI,KACJo9B,QAAS,YACTM,QAAS,aAEX,CACE19B,GAAI,KACJo9B,QAAS,SACTM,QAAS,WAEX,CACE19B,GAAI,KACJo9B,QAAS,YACTM,QAAS,QAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,kBAEX,CACE19B,GAAI,KACJo9B,QAAS,aACTM,QAAS,eAEX,CACE19B,GAAI,KACJo9B,QAAS,OACTM,QAAS,OAEX,CACE19B,GAAI,KACJo9B,QAAS,YACTM,QAAS,uBAEX,CACE19B,GAAI,KACJo9B,QAAS,SACTM,QAAS,WAEX,CACE19B,GAAI,KACJo9B,QAAS,gBACTM,QAAS,UAEX,CACE19B,GAAI,KACJo9B,QAAS,SACTM,QAAS,cAEX,CACE19B,GAAI,KACJo9B,QAAS,QACTM,QAAS,kBAEX,CACE19B,GAAI,KACJo9B,QAAS,qCAEX,CACEp9B,GAAI,KACJo9B,QAAS,gCACTM,QAAS,QAEX,CACE19B,GAAI,KACJo9B,QAAS,WACTM,QAAS,eAEX,CACE19B,GAAI,KACJo9B,QAAS,YACTM,QAAS,YAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,YAEX,CACE19B,GAAI,KACJo9B,QAAS,UACTM,QAAS,aAEX,CACE19B,GAAI,KACJo9B,QAAS,QACTM,QAAS,aAEX,CACE19B,GAAI,KACJo9B,QAAS,YACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,OACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,OACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,gBAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,OACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,yBACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,gBACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,YACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,2BAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,kBACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,gBAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,gBAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,OACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,mBACTM,QAAS,sBAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,kBAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,YACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,eAEX,CACE19B,GAAI,MACJo9B,QAAS,kCACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,gBAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,oBAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,uBACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,gBACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,YACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,OACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,iBACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,mBACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,2BACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,OACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,YACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,oBAEX,CACE19B,GAAI,MACJo9B,QAAS,mBACTM,QAAS,gBAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,OACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,eAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,qBACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,eACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,wBACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,4BACTM,QAAS,gBAEX,CACE19B,GAAI,MACJo9B,QAAS,mCACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,wBACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,eACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,eACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,YACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,kBACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,eACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,gDAEX,CACEp9B,GAAI,MACJo9B,QAAS,cACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,YACTM,QAAS,sCAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,yBACTM,QAAS,gBAEX,CACE19B,GAAI,MACJo9B,QAAS,YACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,aAEX,CACE19B,GAAI,MACJo9B,QAAS,cACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,aACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,WACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,mCACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,OACTM,QAAS,QAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,WAEX,CACE19B,GAAI,MACJo9B,QAAS,QACTM,QAAS,cAEX,CACE19B,GAAI,MACJo9B,QAAS,sBACTM,QAAS,iBAEX,CACE19B,GAAI,MACJo9B,QAAS,UACTM,QAAS,SAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,UAEX,CACE19B,GAAI,MACJo9B,QAAS,eACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS,2BACTM,QAAS,iBAEX,CACE19B,GAAI,MACJo9B,QAAS,SACTM,QAAS,YAEX,CACE19B,GAAI,MACJo9B,QAAS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","sourcesContent":["export function setAttributeDefault<T extends { hostElement: HTMLElement }>(\n host: T,\n attr: string,\n value: unknown\n): void {\n if (!host.hostElement.hasAttribute(attr) && value != null) {\n host.hostElement.setAttribute(attr, String(value));\n }\n}\n\nexport function setPropertyDefault<T extends { hostElement: HTMLElement }>(host: T, prop: keyof T): void {\n setAttributeDefault(host, String(prop), host[prop]);\n}\n\nexport function setAttribute<T extends { hostElement: HTMLElement }>(host: T, attr: string, value: unknown): void {\n host.hostElement.setAttribute(attr, String(value));\n}\n\nexport function setProperty<T extends { hostElement: HTMLElement }>(host: T, prop: keyof T): void {\n setAttribute(host, String(prop), host[prop]);\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n// -----\n\n$-icon-colors: (\n 'primary': cat-token('color.theme.primary.text'),\n 'secondary': cat-token('color.base.neutral.400'),\n 'success': cat-token('color.base.green.400'),\n 'warning': cat-token('color.base.orange.400'),\n 'danger': cat-token('color.base.red.400')\n);\n\n// -----\n\n:host {\n display: flex;\n gap: 0.5rem;\n padding: 1.25rem;\n border-radius: cat-border-radius('l');\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host(:focus-visible) {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n}\n\n.content {\n align-self: center;\n}\n\n::slotted(:last-child) {\n margin-bottom: 0 !important;\n}\n\n// ----- theme\n\n@mixin theme($theme) {\n :host([color='#{$theme}']) {\n background-color: cat-token('color.theme.#{$theme}.bg', 0.1);\n\n cat-icon {\n color: map.get($-icon-colors, $theme);\n }\n }\n}\n\n@include theme('primary');\n@include theme('secondary');\n@include theme('success');\n@include theme('warning');\n@include theme('danger');\n","import { Component, Element, h, Host, Prop } from '@stencil/core';\nimport { setAttributeDefault, setPropertyDefault } from '../../utils/setDefault';\n\n/**\n * Informs user about important changes or conditions in the interface. Use this\n * component if you need to capture user’s attention in a prominent way.\n */\n@Component({\n tag: 'cat-alert',\n styleUrl: 'cat-alert.scss',\n shadow: true\n})\nexport class CatAlert {\n private readonly mapIcon: Map<string, string> = new Map([\n ['primary', 'star-circle-filled'],\n ['secondary', 'clock-filled'],\n ['success', 'check-circle-filled'],\n ['warning', 'danger-filled'],\n ['danger', 'cross-circle-filled']\n ]);\n private readonly mapRole: Map<string, string> = new Map([\n ['primary', 'status'],\n ['secondary', 'status'],\n ['success', 'status'],\n ['warning', 'alert'],\n ['danger', 'alert']\n ]);\n\n @Element() hostElement!: HTMLElement;\n\n /**\n * The color palette of the alert.\n */\n @Prop() color: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' = 'primary';\n\n /**\n * The name of an icon to be displayed in the alert.\n */\n @Prop() icon?: string;\n\n /**\n * Whether the icon of the alert is deactivated.\n */\n @Prop() noIcon = false;\n\n connectedCallback() {\n setAttributeDefault(this, 'tabindex', 0);\n setAttributeDefault(this, 'role', this.mapRole.get(this.color));\n setPropertyDefault(this, 'color');\n }\n\n render() {\n return (\n <Host>\n {!this.noIcon && <cat-icon size=\"l\" icon={this.icon ? this.icon : this.mapIcon.get(this.color)}></cat-icon>}\n <div class=\"content\">\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n","/**\n * Loads an image and wraps the result in a promise.\n *\n * @param src the image URL\n * @returns a promise\n */\nconst loadImg = (src: string): Promise<Event> => {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener('load', resolve);\n image.addEventListener('error', reject);\n image.src = src;\n });\n};\n\nexport default loadImg;\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n// -----\n\n$-background-color: cat-token('color.base.neutral.400');\n$-color: cat-token('color.base.white');\n$-sizes: (\n 'xl': 3.5rem,\n 'l': 3rem,\n 'm': 2.5rem,\n 's': 2rem,\n 'xs': 1.5rem\n);\n\n// -----\n\n:host {\n /**\n * @prop --cat-avatar-bg: The background color of the avatar.\n * @prop --cat-avatar-fill: The text color of the avatar.\n * @prop --cat-avatar-size: The size of the avatar.\n * @prop --cat-avatar-font-size: The font size of the avatar.\n */\n display: contents;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.avatar {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: cat-border-radius('m');\n text-decoration: inherit;\n color: var(--cat-avatar-fill, $-color);\n background-color: var(--cat-avatar-bg, $-background-color);\n background-size: cover;\n background-position: center;\n white-space: nowrap;\n overflow: hidden;\n vertical-align: middle;\n @include cat-select(none);\n\n &:focus-visible {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n}\n\n.avatar-round {\n border-radius: 50%;\n}\n\n// ----- size\n\n@mixin size($size, $fontSize) {\n .avatar-#{$size} {\n width: var(--cat-avatar-size, map.get($-sizes, $size));\n height: var(--cat-avatar-size, map.get($-sizes, $size));\n line-height: var(--cat-avatar-size, map.get($-sizes, $size));\n font-size: var(--cat-avatar-font-size, cat-body-font-size($fontSize));\n }\n}\n\n@include size('xs', 'xs');\n@include size('s', 's');\n@include size('m', 'm');\n@include size('l', 'l');\n@include size('xl', 'xl');\n","import { Component, h, Prop, State, Watch } from '@stencil/core';\nimport log from 'loglevel';\nimport loadImg from '../../utils/load-img';\n\n/**\n * Avatars are used to represent a person or object.\n */\n@Component({\n tag: 'cat-avatar',\n styleUrl: 'cat-avatar.scss',\n shadow: true\n})\nexport class CatAvatar {\n @State() backgroundImage?: string;\n\n /**\n * The size of the avatar.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * Use round avatar edges.\n */\n @Prop() round = false;\n\n /**\n * The label of the avatar.\n */\n @Prop() label = '';\n\n /**\n * Custom initials for the avatar.\n */\n @Prop() initials?: string;\n\n /**\n * An optional avatar image.\n */\n @Prop() src?: string;\n\n /**\n * An icon to be used instead of the initials.\n */\n @Prop() icon?: string;\n\n /**\n * A destination to link to, rendered in the href attribute of a link.\n */\n @Prop() url?: string;\n\n /**\n * Specifies where to open the linked document.\n */\n @Prop() urlTarget?: '_blank' | '_self';\n\n @Watch('src')\n onSrcChanged(value?: string): void {\n if (value) {\n loadImg(value).then(\n () => (this.backgroundImage = `url(${value})`),\n () => (this.backgroundImage = undefined)\n );\n } else {\n this.backgroundImage = undefined;\n }\n }\n\n componentWillLoad(): void {\n this.onSrcChanged(this.src);\n }\n\n componentWillRender(): void {\n if (!this.label) {\n log.warn('[A11y] Missing ARIA label on avatar', this);\n }\n }\n\n render() {\n if (this.url) {\n return (\n <a href={this.url} target={this.urlTarget} style={this.cssStyle} class={this.cssClass} aria-label={this.label}>\n {this.content}\n </a>\n );\n } else {\n return (\n <span style={this.cssStyle} class={this.cssClass} aria-label={this.label}>\n {this.content}\n </span>\n );\n }\n }\n\n private get content() {\n return !this.backgroundImage\n ? [this.icon ? <cat-icon icon={this.icon} size={this.size}></cat-icon> : this.getInitials()]\n : [];\n }\n\n private get cssStyle() {\n return { 'background-image': this.backgroundImage };\n }\n\n private get cssClass() {\n return {\n avatar: true,\n 'avatar-round': this.round,\n [`avatar-${this.size}`]: Boolean(this.size)\n };\n }\n\n private getInitials(): string {\n return (\n this.initials ??\n (this.label ?? '')\n .split(' ')\n .map(n => n[0])\n .join('')\n );\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n// -----\n\n$-sizes: (\n 'xl': 3rem,\n 'l': 2.5rem,\n 'm': 2rem,\n 's': 1.5rem,\n 'xs': 1rem\n);\n$-paddings: (\n 'xl': 0 1rem,\n 'l': 0 1rem,\n 'm': 0 0.75rem,\n 's': 0 0.5rem,\n 'xs': 0 0.25rem\n);\n\n// -----\n\n:host([hidden]) {\n display: none;\n}\n\n:host {\n display: inline-flex;\n max-width: 100%;\n vertical-align: baseline;\n align-items: center;\n justify-content: center;\n border-radius: cat-border-radius('m');\n text-decoration: none;\n line-height: 1.5;\n\n slot {\n display: inline-block;\n @include cat-ellipsis;\n }\n}\n\n// ----- round\n\n:host([round]) {\n border-radius: 10rem;\n}\n\n// ----- theme\n\n:host([variant='filled']) {\n background-color: cat-token-wrap(var(--bg), 0.1);\n color: cat-token-wrap(var(--text));\n font-weight: 600;\n @include cat-font-smooth;\n}\n\n$-outline: inset 0 0 0 1px cat-token-wrap(var(--border), $alpha: 0.2);\n\n:host([variant='outlined']) {\n background-color: cat-token('color.ui.background.body');\n box-shadow: $-outline;\n color: cat-token-wrap(var(--text));\n}\n\n@mixin theme($theme) {\n :host([color='#{$theme}']) {\n --bg: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n --fill: #{cat-token('color.theme.#{$theme}.fill', $wrap: false)};\n --text: #{cat-token('color.theme.#{$theme}.text', $wrap: false)};\n @if $theme == 'secondary' {\n --border: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n } @else {\n --border: #{cat-token('color.theme.#{$theme}.text', $wrap: false)};\n }\n }\n}\n\n@include theme('primary');\n@include theme('secondary');\n@include theme('success');\n@include theme('warning');\n@include theme('danger');\n\n// ----- size\n\n@mixin size($size, $fontSize) {\n :host([size='#{$size}']) {\n height: map.get($-sizes, $size);\n min-width: map.get($-sizes, $size);\n font-size: cat-body-font-size($fontSize);\n padding: map.get($-paddings, $size);\n }\n}\n\n@include size('xs', 'xs');\n@include size('s', 'xs');\n@include size('m', 's');\n@include size('l', 'm');\n@include size('xl', 'l');\n\n// ----- pulse\n\n$-pulse-0: 0 0 0 0 cat-token-wrap(var(--bg));\n$-pulse-70: transparent 0 0 0 0.5rem;\n$-pulse-100: transparent 0 0 0 0;\n\n:host([pulse][variant='filled']) {\n animation: 1.5s ease 0s infinite normal none running pulse;\n}\n\n:host([pulse][variant='outlined']) {\n animation: 1.5s ease 0s infinite normal none running pulse-outlined;\n}\n\n@keyframes pulse {\n 0% {\n box-shadow: $-pulse-0;\n }\n\n 70% {\n box-shadow: $-pulse-70;\n }\n\n 100% {\n box-shadow: $-pulse-100;\n }\n}\n\n@keyframes pulse-outlined {\n 0% {\n box-shadow: $-pulse-0, $-outline;\n }\n\n 70% {\n box-shadow: $-pulse-70, $-outline;\n }\n\n 100% {\n box-shadow: $-pulse-100, $-outline;\n }\n}\n","import { Component, Element, Prop, Watch, h } from '@stencil/core';\nimport { setProperty, setPropertyDefault } from '../../utils/setDefault';\n\n/**\n * Badges are used to inform users of the status of an object or of an action\n * that’s been taken.\n */\n@Component({\n tag: 'cat-badge',\n styleUrl: 'cat-badge.scss',\n shadow: true\n})\nexport class CatBadge {\n @Element() hostElement!: HTMLElement;\n\n /**\n * The rendering style of the badge.\n */\n @Prop() variant: 'filled' | 'outlined' = 'filled';\n\n /**\n * The color palette of the badge.\n */\n @Prop() color: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' = 'primary';\n\n /**\n * The size of the badge.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * Use round badge edges.\n */\n @Prop() round = false;\n\n /**\n * Draw attention to the badge with a subtle animation.\n */\n @Prop() pulse = false;\n\n connectedCallback() {\n setPropertyDefault(this, 'variant');\n setPropertyDefault(this, 'color');\n setPropertyDefault(this, 'size');\n }\n\n render() {\n return <slot></slot>;\n }\n\n @Watch('color')\n onColorChanged() {\n setProperty(this, 'color');\n }\n\n @Watch('size')\n onSizeChanged() {\n setProperty(this, 'size');\n }\n\n @Watch('variant')\n onVariantChanged() {\n setProperty(this, 'variant');\n }\n}\n","const _breakpoints = ['xs', 's', 'm', 'l', 'xl'] as const;\n\nexport type Breakpoint = typeof _breakpoints[number];\n\nexport const Breakpoints: { [breakpoint in Breakpoint]: string } = {\n xs: '(max-width: 539.98px)',\n s: '(max-width: 767.98px)',\n m: '(max-width: 991.98px)',\n l: '(max-width: 1199.98px)',\n xl: '(max-width: 1399.98px)'\n};\n\nexport function isBreakpoint(value: unknown): value is Breakpoint {\n return typeof value === 'string' && _breakpoints.includes(value as Breakpoint);\n}\n","// https://github.com/angular/components/blob/master/src/cdk/platform/platform.ts\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n hasV8BreakIterator = typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator;\n} catch {\n hasV8BreakIterator = false;\n}\n\nexport class Platform {\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = /(msie|trident)/i.test(navigator.userAgent);\n\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n BLINK: boolean =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !!((window as any).chrome || hasV8BreakIterator) && typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT;\n\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n WEBKIT: boolean = /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean = /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n FIREFOX: boolean = /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n SAFARI: boolean = /safari/i.test(navigator.userAgent) && this.WEBKIT;\n}\n","import log from 'loglevel';\nimport { Platform } from './platform';\n\n// https://github.com/angular/components/blob/master/src/cdk/layout/media-matcher.ts\n\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility: Set<string> = new Set<string>();\n\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode: HTMLStyleElement | undefined;\n\n/** A utility for calling matchMedia queries. */\nexport class MediaMatcher {\n private _platform;\n private _matchMedia: (query: string) => MediaQueryList;\n\n constructor() {\n this._platform = new Platform();\n this._matchMedia = window.matchMedia.bind(window);\n }\n\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query: string): MediaQueryList {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n }\n}\n\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query: string) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n } catch (e) {\n log.error(e);\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n$button-sizes: (\n 'xl': 3.5rem,\n 'l': 3rem,\n 'm': 2.5rem,\n 's': 2rem,\n 'xs': 1.5rem\n);\n\n:host {\n display: inline-block;\n max-width: 100%;\n vertical-align: middle;\n @include cat-select(none);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.cat-button {\n position: relative;\n font: inherit;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: cat-border-radius('m');\n text-decoration: none;\n width: 100%;\n box-sizing: border-box;\n cursor: pointer;\n transition: color cat-token('time.transition.s') linear, border-color cat-token('time.transition.s') linear,\n background-color cat-token('time.transition.s') linear, box-shadow cat-token('time.transition.s') linear;\n\n &:focus-visible {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n}\n\n// ----- content\n\n.cat-button-content {\n @include cat-break-word;\n\n .cat-button-ellipsed & {\n @include cat-ellipsis;\n }\n}\n\n// ----- disabled\n\n.cat-button-disabled {\n @include cat-disabled;\n}\n\n// ----- round\n\n.cat-button-round {\n border-radius: 10rem;\n}\n\n// ----- loading\n\n.cat-button-loading {\n cursor: default;\n\n cat-spinner {\n position: absolute;\n }\n\n > *:not(cat-spinner) {\n visibility: hidden;\n }\n}\n\n// ----- theme\n\n.cat-button-filled {\n background-color: cat-token-wrap(var(--bg));\n color: cat-token-wrap(var(--fill));\n font-weight: 600;\n @include cat-font-smooth;\n\n &.cat-button-disabled {\n --bg: #{cat-token('color.ui.background.muted', $wrap: false)};\n --fill: #{cat-token('color.ui.font.muted', $wrap: false)};\n }\n}\n\n.cat-button-outlined {\n background-color: cat-token('color.ui.background.body');\n box-shadow: inset 0 0 0 1px cat-token-wrap(var(--base), $alpha: 0.2);\n color: cat-token-wrap(var(--text));\n\n &.cat-button-disabled {\n --base: #{cat-token('color.ui.font.muted', $wrap: false)};\n --text: #{cat-token('color.ui.font.muted', $wrap: false)};\n }\n\n &:hover:not(.cat-button-disabled):not(.cat-button-loading) {\n background-color: cat-token-wrap(var(--base), $alpha: 0.05);\n }\n\n &.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading) {\n background-color: cat-token-wrap(var(--base), $alpha: 0.1);\n }\n\n &:active:not(.cat-button-disabled):not(.cat-button-loading) {\n background-color: cat-token-wrap(var(--base), $alpha: 0.1);\n }\n}\n\n.cat-button-text {\n background-color: transparent;\n color: cat-token-wrap(var(--text));\n text-decoration: cat-token('font.decoration.linkButton');\n\n &.cat-button-disabled {\n --text: #{cat-token('color.ui.font.muted', $wrap: false)};\n }\n\n &:hover:not(.cat-button-disabled):not(.cat-button-loading) {\n text-decoration: cat-token('font.decoration.linkButtonHover');\n background-color: rgba(var(--base), 0.05);\n }\n\n &.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading) {\n text-decoration: cat-token('font.decoration.linkButtonHover');\n background-color: rgba(var(--base), 0.1);\n }\n}\n\n@mixin theme($theme) {\n .cat-button-#{$theme} {\n --bg: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n --fill: #{cat-token('color.theme.#{$theme}.fill', $wrap: false)};\n --text: #{cat-token('color.theme.#{$theme}.text', $wrap: false)};\n @if $theme == 'secondary' {\n --base: #{cat-token('color.theme.#{$theme}.bg', $wrap: false)};\n } @else {\n --base: #{cat-token('color.theme.#{$theme}.text', $wrap: false)};\n }\n\n &:hover:not(.cat-button-disabled):not(.cat-button-loading) {\n --bg: #{cat-token('color.theme.#{$theme}.bgHover', $wrap: false)};\n --fill: #{cat-token('color.theme.#{$theme}.fillHover', $wrap: false)};\n --text: #{cat-token('color.theme.#{$theme}.textHover', $wrap: false)};\n }\n\n &.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading),\n &:active:not(.cat-button-disabled):not(.cat-button-loading) {\n --bg: #{cat-token('color.theme.#{$theme}.bgActive', $wrap: false)};\n --fill: #{cat-token('color.theme.#{$theme}.fillActive', $wrap: false)};\n --text: #{cat-token('color.theme.#{$theme}.textActive', $wrap: false)};\n }\n }\n}\n\n@include theme('primary');\n@include theme('secondary');\n@include theme('success');\n@include theme('warning');\n@include theme('danger');\n\n// ----- size\n\n@mixin size($size, $fontSize, $padding) {\n $-line-height: cat-body-line-height($fontSize);\n\n $-total-height: map.get($button-sizes, $size);\n $-padding-v: ($-total-height - $-line-height) * 0.5;\n $-padding-h: $padding;\n\n .cat-button-#{$size} {\n min-width: map.get($button-sizes, $size);\n padding: $-padding-v $-padding-h;\n @include cat-body($fontSize, null);\n gap: 0.25rem;\n\n // normalize icon size for line height\n @if $fontSize == 'm' {\n cat-icon {\n margin-top: -0.125rem;\n margin-bottom: -0.125rem;\n }\n }\n\n &.cat-button-icon {\n width: $-total-height;\n padding-left: 0;\n padding-right: 0;\n }\n }\n\n :host(.cat-button-pull[size='#{$size}']) {\n margin: $-padding-v * -1 $-padding-h * -1;\n }\n\n :host(.cat-button-pull-h[size='#{$size}']) {\n margin-left: $-padding-h * -1;\n margin-right: $-padding-h * -1;\n }\n\n :host(.cat-button-pull-v[size='#{$size}']) {\n margin-top: $-padding-v * -1;\n margin-bottom: $-padding-v * -1;\n }\n\n :host(.cat-button-pull-t[size='#{$size}']) {\n margin-top: $-padding-v * -1;\n }\n\n :host(.cat-button-pull-l[size='#{$size}']) {\n margin-left: $-padding-h * -1;\n }\n\n :host(.cat-button-pull-b[size='#{$size}']) {\n margin-bottom: $-padding-v * -1;\n }\n\n :host(.cat-button-pull-r[size='#{$size}']) {\n margin-right: $-padding-h * -1;\n }\n}\n\n:host(.cat-button-pull:not([size])) {\n margin: -0.625rem -0.75rem;\n}\n\n:host(.cat-button-pull-h:not([size])) {\n margin-left: -0.75rem;\n margin-right: -0.75rem;\n}\n\n:host(.cat-button-pull-v:not([size])) {\n margin-top: -0.625rem;\n margin-bottom: -0.625rem;\n}\n\n:host(.cat-button-pull-t:not([size])) {\n margin-top: -0.625rem;\n}\n\n:host(.cat-button-pull-l:not([size])) {\n margin-left: -0.75rem;\n}\n\n:host(.cat-button-pull-b:not([size])) {\n margin-bottom: -0.625rem;\n}\n\n:host(.cat-button-pull-r:not([size])) {\n margin-right: -0.75rem;\n}\n\n@include size('xs', 's', 0.25rem);\n@include size('s', 'm', 0.5rem);\n@include size('m', 'm', 0.75rem);\n@include size('l', 'm', 1rem);\n@include size('xl', 'l', 1.25rem);\n\n// ----- tabs\n\n:host(.cat-tab-active:not(:hover)) {\n --cat-primary-text: transparent;\n}\n\n// ----- alignment\n\n:host(.cat-text-left) .cat-button {\n justify-content: left;\n}\n\n:host(.cat-text-right) .cat-button {\n justify-content: right;\n}\n\n// ----- navigation\n\n:host(.cat-nav-item) {\n width: 100%;\n\n .cat-button {\n box-shadow: none;\n border-radius: 0;\n justify-content: left;\n padding-left: $cat-nav-padding-horizontal;\n padding-right: $cat-nav-padding-horizontal;\n gap: 0.5rem;\n\n &:focus-visible {\n outline-offset: -2px;\n }\n }\n}\n","import { Component, Event, EventEmitter, h, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport log from 'loglevel';\nimport { Breakpoint, Breakpoints, isBreakpoint } from '../../utils/breakpoints';\nimport { MediaMatcher } from '../../utils/media-matcher';\n\n/**\n * Buttons are used for interface actions. Primary style should be used only\n * once per view for main call-to-action.\n *\n * @part button - The native anchor or button element.\n * @part content - The textual content of the button.\n * @part prefix - The prefix icon.\n * @part suffix - The suffix icon.\n */\n@Component({\n tag: 'cat-button',\n styleUrl: 'cat-button.scss',\n shadow: true\n})\nexport class CatButton {\n private button!: HTMLButtonElement | HTMLAnchorElement;\n private mediaMatcher?: MediaMatcher;\n private mediaQueryList?: MediaQueryList;\n private mediaQueryListener?: (event: MediaQueryListEvent) => void;\n\n @State() _iconOnly = true;\n\n /**\n * The rendering style of the button.\n */\n @Prop() variant: 'filled' | 'outlined' | 'text' = 'outlined';\n\n /**\n * The color palette of the button.\n */\n @Prop() color: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' = 'secondary';\n\n /**\n * Set the button into an active state.\n */\n @Prop() active = false;\n\n /**\n * The size of the button.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * The name of the button, which gets paired with the button's value when\n * submitted as part of a form. Corresponds with the native HTML name\n * attribute.\n */\n @Prop() name?: string;\n\n /**\n * The value of the button, which gets paired with the button's name when\n * submitted as part of a form. Corresponds with the native HTML value\n * attribute.\n */\n @Prop() value?: string;\n\n /**\n * Specifies that the button should be disabled. A disabled button is unusable\n * and un-clickable. Corresponds with the native HTML disabled attribute.\n */\n @Prop() disabled = false;\n\n /**\n * Displays the button in a loading state with a spinner. Just like a disabled\n * button, an inactive button is unusable and un-clickable. However, it\n * retains the current focus state.\n */\n @Prop() loading = false;\n\n /**\n * Allows the button to submit a form.\n */\n @Prop() submit = false;\n\n /**\n * Disables ellipse overflowing button content.\n */\n @Prop() noEllipsis = false;\n\n /**\n * Use round button edges.\n */\n @Prop() round = false;\n\n /**\n * A destination to link to, rendered in the href attribute of a link.\n */\n @Prop() url?: string;\n\n /**\n * Specifies where to open the linked document.\n */\n @Prop() urlTarget?: '_blank' | '_self';\n\n /**\n * The name of an icon to be displayed in the button.\n */\n @Prop() icon?: string;\n\n /**\n * Hide the actual button content and only display the icon.\n */\n @Prop() iconOnly: boolean | Breakpoint = false;\n\n /**\n * Display the icon on the right.\n */\n @Prop() iconRight = false;\n\n /**\n * Adds a unique identifier for the button. Please note that with this\n * particular component this ID is added inside the web component. If you need\n * an ID on the HTML element, use the regular `id` attribute instead.\n */\n @Prop() buttonId?: string;\n\n /**\n * Adds accessible label for the button that is only shown for screen\n * readers. Typically, this label text replaces the visible text on the\n * button for users who use assistive technology.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n /**\n * Sets the `aria-current` attribute on the button.\n */\n @Prop({ attribute: 'a11y-current' }) a11yCurrent?: string;\n\n @Watch('iconOnly')\n onIconOnlyChanged(value: boolean | Breakpoint): void {\n // teardown\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.mediaQueryList?.removeEventListener('change', this.mediaQueryListener!);\n this.mediaQueryList = undefined;\n this.mediaQueryListener = undefined;\n // setup\n if (isBreakpoint(value)) {\n this.mediaMatcher ??= new MediaMatcher();\n this.mediaQueryList = this.mediaMatcher.matchMedia(Breakpoints[value]);\n this.mediaQueryListener = (event: MediaQueryListEvent) => (this._iconOnly = event.matches);\n this.mediaQueryList.addEventListener('change', this.mediaQueryListener);\n this._iconOnly = this.mediaQueryList.matches;\n } else {\n this._iconOnly = value;\n }\n }\n\n /**\n * Emitted when the button is clicked.\n */\n @Event() catClick!: EventEmitter<MouseEvent>;\n\n /**\n * Emitted when the button received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the button loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillLoad(): void {\n this.onIconOnlyChanged(this.iconOnly);\n }\n\n componentWillRender(): void {\n if (this.isIconButton && !this.a11yLabel) {\n log.warn('[A11y] Missing ARIA label on icon button', this);\n }\n }\n\n @Listen('click')\n haltDisabledEvents(event: Event): void {\n if (this.disabled || this.loading) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n /**\n * Programmatically move focus to the button. Use this method instead of\n * `button.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.button.focus(options);\n }\n\n /**\n * Programmatically remove focus from the button. Use this method instead of\n * `button.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.button.blur();\n }\n\n /**\n * Programmatically simulate a click on the button.\n */\n @Method()\n async doClick(): Promise<void> {\n this.button.click();\n }\n\n render() {\n if (this.url) {\n return (\n <a\n ref={el => (this.button = el as HTMLAnchorElement)}\n href={this.disabled ? undefined : this.url}\n target={this.urlTarget}\n aria-disabled={this.disabled ? 'true' : null}\n aria-label={this.a11yLabel}\n aria-current={this.a11yCurrent}\n id={this.buttonId}\n part=\"button\"\n class={{\n 'cat-button': true,\n 'cat-button-active': this.active,\n 'cat-button-icon': this.isIconButton,\n 'cat-button-round': this.round,\n 'cat-button-loading': this.loading,\n 'cat-button-disabled': this.disabled,\n 'cat-button-ellipsed': !this.noEllipsis && !this.isIconButton,\n [`cat-button-${this.variant}`]: Boolean(this.variant),\n [`cat-button-${this.color}`]: Boolean(this.color),\n [`cat-button-${this.size}`]: Boolean(this.size)\n }}\n onClick={this.onClick.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n >\n {this.content}\n </a>\n );\n } else {\n return (\n <button\n ref={el => (this.button = el as HTMLButtonElement)}\n type={this.submit ? 'submit' : 'button'}\n name={this.name}\n value={this.value}\n disabled={this.disabled}\n aria-disabled={this.disabled ? 'true' : null}\n aria-label={this.a11yLabel}\n aria-current={this.a11yCurrent}\n id={this.buttonId}\n part=\"button\"\n class={{\n 'cat-button': true,\n 'cat-button-active': this.active,\n 'cat-button-icon': this.isIconButton,\n 'cat-button-round': this.round ?? this.isIconButton,\n 'cat-button-loading': this.loading,\n 'cat-button-disabled': this.disabled,\n 'cat-button-ellipsed': !this.noEllipsis && !this.isIconButton,\n [`cat-button-${this.variant}`]: Boolean(this.variant),\n [`cat-button-${this.color}`]: Boolean(this.color),\n [`cat-button-${this.size}`]: Boolean(this.size)\n }}\n onClick={this.onClick.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n >\n {this.content}\n </button>\n );\n }\n }\n\n private get iconSize(): 'xs' | 's' | 'm' | 'l' | 'xl' {\n switch (this.size) {\n case 'xs':\n return 's';\n default:\n return 'l';\n }\n }\n\n private get spinnerSize(): 'xs' | 's' | 'm' | 'l' | 'xl' {\n switch (this.size) {\n case 'xs':\n return 'xs';\n default:\n return 'm';\n }\n }\n\n private get isIconButton() {\n return Boolean(this.icon) && this._iconOnly;\n }\n\n private get hasPrefixIcon() {\n return Boolean(this.icon) && !this._iconOnly && !this.iconRight;\n }\n\n private get hasSuffixIcon() {\n return Boolean(this.icon) && !this._iconOnly && this.iconRight;\n }\n\n private get content() {\n return [\n this.hasPrefixIcon ? <cat-icon icon={this.icon} size={this.iconSize} part=\"prefix\"></cat-icon> : null,\n this.isIconButton ? (\n <cat-icon icon={this.icon} size={this.iconSize}></cat-icon>\n ) : (\n <span class=\"cat-button-content\" part=\"content\">\n <slot></slot>\n </span>\n ),\n this.hasSuffixIcon ? <cat-icon icon={this.icon} size={this.iconSize} part=\"suffix\"></cat-icon> : null,\n this.loading ? <cat-spinner size={this.spinnerSize}></cat-spinner> : null\n ];\n }\n\n private onClick(event: MouseEvent) {\n this.catClick.emit(event);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n$-padding: 1.25rem;\n\n:host {\n display: block;\n margin-bottom: $cat-body-margin-bottom;\n border-radius: cat-border-radius('l');\n background-color: cat-token('color.ui.background.body');\n padding: $-padding;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n::slotted(:last-child) {\n margin-bottom: 0 !important;\n}\n\n::slotted(nav),\n::slotted(nav:last-child) {\n margin: #{$cat-body-margin-bottom * 0.5 - $-padding} #{-$-padding} !important;\n}\n\n// --- pull out helper classes\n\n::slotted(.cat-card-pull) {\n margin: -$-padding !important;\n width: calc(100% + #{2 * $-padding}) !important;\n height: calc(100% + #{2 * $-padding}) !important;\n}\n\n::slotted(.cat-card-pull-h) {\n margin-left: -$-padding !important;\n margin-right: -$-padding !important;\n width: calc(100% + #{2 * $-padding}) !important;\n}\n\n::slotted(.cat-card-pull-v) {\n margin-top: -$-padding !important;\n margin-bottom: -$-padding !important;\n height: calc(100% + #{2 * $-padding}) !important;\n}\n\n::slotted(.cat-card-pull-t) {\n margin-top: -$-padding !important;\n}\n\n::slotted(.cat-card-pull-l) {\n margin-left: -$-padding !important;\n}\n\n::slotted(.cat-card-pull-r) {\n margin-right: -$-padding !important;\n}\n\n::slotted(.cat-card-pull-b) {\n margin-bottom: -$-padding !important;\n}\n","import { Component, h } from '@stencil/core';\n\n/**\n * Cards are surfaces that display content and actions on a single topic. They\n * should be easy to scan for relevant and actionable information.\n */\n@Component({\n tag: 'cat-card',\n styleUrl: 'cat-card.scss',\n shadow: true\n})\nexport class CatCard {\n render() {\n return <slot></slot>;\n }\n}\n","import { h, FunctionalComponent } from '@stencil/core';\n\n/**\n * Properties of CatFormHint.\n *\n * @property hint - Optional hint text(s) of the form field.\n * @property slottedHint - Optional hint element of the form field.\n */\ninterface CatFormHintProps {\n hint?: string | string[];\n slottedHint?: HTMLSlotElement;\n}\n\n/**\n * CatFormHint is a functional component that represents the hint area of form elements.\n *\n * @param props - {@link CatFormHintProps}\n * @return a JSX.Element\n */\nexport const CatFormHint: FunctionalComponent<CatFormHintProps> = props => {\n const { hint, slottedHint } = props;\n return (\n <div class=\"hint-section\">\n {[\n hint &&\n (Array.isArray(hint) ? hint.map(item => <p class=\"input-hint\">{item}</p>) : <p class=\"input-hint\">{hint}</p>),\n slottedHint\n ]}\n </div>\n );\n};\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n\n$checkbox-width: 1.25rem;\n$checkbox-height: 1.25rem;\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n flex: 0 1 auto;\n display: flex;\n gap: 0.5rem;\n @include cat-body('m');\n @include cat-select(none);\n cursor: pointer;\n position: relative;\n}\n\n.label-left {\n flex-direction: row-reverse;\n\n input {\n right: 1px;\n left: unset;\n }\n}\n\ninput {\n position: absolute;\n width: $checkbox-width;\n height: $checkbox-height;\n margin: 0;\n opacity: 0;\n cursor: inherit;\n left: 1px;\n top: 0.5px;\n}\n\n.box {\n flex: 0 0 auto;\n display: flex;\n position: relative;\n height: $checkbox-height;\n width: $checkbox-width;\n background-color: cat-token('color.ui.background.input');\n border: 1px solid cat-token('color.ui.border.dark');\n border-radius: cat-border-radius(s);\n transition: background-color cat-token('time.transition.s') ease, border-color cat-token('time.transition.s') ease;\n pointer-events: none;\n\n svg {\n fill: none;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 16px;\n stroke-dashoffset: 16px;\n transition: all cat-token('time.transition.s') ease;\n width: 50%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.99);\n }\n\n :checked + & {\n background-color: cat-token('color.theme.primary.bg');\n border-color: cat-token('color.theme.primary.bg');\n stroke: cat-token('color.theme.primary.fill');\n\n .check {\n stroke-dashoffset: 0;\n }\n }\n\n :indeterminate + & {\n background-color: cat-token('color.theme.primary.bg');\n border-color: cat-token('color.theme.primary.bg');\n stroke: cat-token('color.theme.primary.fill');\n\n .dash {\n stroke-dashoffset: 0;\n }\n }\n\n :focus-visible + & {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n\n .is-disabled & {\n background-color: cat-token('color.ui.background.inputDisabled');\n border-color: cat-token('color.ui.border.dark');\n stroke: cat-token('color.ui.font.muted');\n }\n}\n\n:host(.cat-error) {\n .box {\n border: 1px solid cat-token('color.theme.danger.bg');\n }\n\n :checked + .box,\n :indeterminate + .box {\n background-color: cat-token('color.theme.danger.bg');\n border-color: cat-token('color.theme.danger.bg');\n stroke: cat-token('color.theme.danger.fill');\n }\n}\n\n.label {\n flex: 1 1 auto;\n min-width: 0;\n\n .is-hidden & {\n @include cat-visually-hidden;\n }\n}\n\n.is-disabled {\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\n\nlet nextUniqueId = 0;\n\n/**\n * Checkboxes are used to let a user choose one or more options from a limited\n * number of options.\n *\n * @slot hint - Optional hint element to be displayed with the checkbox.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part checkbox - The checkbox element.\n * @part label - The label content.\n */\n@Component({\n tag: 'cat-checkbox',\n styleUrls: ['cat-checkbox.scss'],\n shadow: true\n})\nexport class CatCheckbox {\n private readonly id = `cat-checkbox-${nextUniqueId++}`;\n private input!: HTMLInputElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Checked state of the checkbox\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Disabled state of the checkbox\n */\n @Prop() disabled = false;\n\n /**\n * Indeterminate state of the checkbox\n */\n @Prop() indeterminate = false;\n\n /**\n * Label of the checkbox which is presented in the UI\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * The name of the input\n */\n @Prop() name?: string;\n\n /**\n * Required state of the checkbox\n */\n @Prop() required = false;\n\n /**\n * The value of the checkbox\n */\n @Prop({ mutable: true }) value?: string | boolean;\n\n /**\n * Optional hint text(s) to be displayed with the checkbox.\n */\n @Prop() hint?: string | string[];\n\n /**\n * Whether the label should appear to the left of the checkbox.\n */\n @Prop() labelLeft = false;\n\n /**\n * Emitted when the checked status of the checkbox is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the checkbox received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the checkbox loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentDidLoad() {\n if (this.input && this.indeterminate) {\n this.input.indeterminate = true;\n }\n }\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on checkbox', this);\n }\n }\n\n /**\n * Programmatically move focus to the checkbox. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the checkbox. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n /**\n * Programmatically simulate a click on the checkbox.\n */\n @Method()\n async doClick(): Promise<void> {\n this.input.click();\n }\n\n render() {\n return (\n <Host>\n <label\n htmlFor={this.id}\n class={{ 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }}\n >\n <input\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.id}\n type=\"checkbox\"\n name={this.name}\n value={this.value !== undefined ? String(this.value) : this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n />\n <span class=\"box\" aria-hidden=\"true\" part=\"checkbox\">\n <svg class=\"check\" viewBox=\"0 0 12 10\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n <svg class=\"dash\" viewBox=\"0 0 12 10\">\n <polyline points=\"1.5 5 10.5 5\"></polyline>\n </svg>\n </span>\n <span class=\"label\" part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n </span>\n </label>\n {this.hintSection}\n </Host>\n );\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private onInput(event: Event) {\n this.checked = this.input.checked;\n\n if (!this.value || typeof this.value === 'boolean') {\n this.value = this.checked;\n }\n this.catChange.emit(event);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n","function getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n\n if (middleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement`', 'middleware detected. This will lead to an infinite loop. Ensure only', 'one of either has been passed to the `middleware` array.'].join(' '));\n }\n }\n\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n\n for (let i = 0; i < middleware.length; i++) {\n const {\n name,\n fn\n } = middleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = { ...middlewareData,\n [name]: { ...middlewareData[name],\n ...data\n }\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n if (resetCount > 50) {\n console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n }\n }\n\n if (reset && resetCount <= 50) {\n resetCount++;\n\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n\n i = -1;\n continue;\n }\n }\n\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return { ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n var _await$platform$isEle;\n\n if (options === void 0) {\n options = {};\n }\n\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: elementContext === 'floating' ? { ...rects.floating,\n x,\n y\n } : rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects[elementContext]);\n return {\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}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type\n const {\n element,\n padding = 0\n } = options != null ? options : {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n\n return {};\n }\n\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const alignment = getAlignment(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n if (clientSize === 0) {\n clientSize = rects.floating[length];\n }\n\n const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds\n\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n\n});\n\nconst hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n\n return true;\n });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'autoPlacement',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n const {\n x,\n y,\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = middlewareArguments;\n const {\n alignment = null,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n const currentPlacement = placements[currentIndex];\n\n if (currentPlacement == null) {\n return {};\n }\n\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n if (placement !== currentPlacement) {\n return {\n x,\n y,\n reset: {\n placement: placements[0]\n }\n };\n }\n\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'flip',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$flip;\n\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const side = getSide(placement);\n const isBasePlacement = side === initialPlacement;\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n overflows.push(overflow[main], overflow[cross]);\n }\n\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }]; // One or more sides is overflowing\n\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip$, _middlewareData$flip2;\n\n const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n const nextPlacement = placements[nextIndex];\n\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n let resetPlacement = 'bottom';\n\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n if (placement) {\n resetPlacement = placement;\n }\n\n break;\n }\n\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n\n return {};\n }\n\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n let {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = _temp === void 0 ? {} : _temp;\n return {\n name: 'hide',\n\n async fn(middlewareArguments) {\n const {\n rects\n } = middlewareArguments;\n\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n case 'escaped':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n default:\n {\n return {};\n }\n }\n }\n\n };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n const {\n placement,\n platform,\n elements\n } = middlewareArguments;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n\n return {\n name: 'offset',\n options: value,\n\n async fn(middlewareArguments) {\n const {\n x,\n y\n } = middlewareArguments;\n const diffCoords = await convertValueToCoords(middlewareArguments, value);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'shift',\n options,\n\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n\n const limitedCoords = limiter.fn({ ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return { ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n options,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset(middlewareArguments) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n\n };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'size',\n options,\n\n async fn(middlewareArguments) {\n const {\n placement,\n rects,\n platform,\n elements\n } = middlewareArguments;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = options;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n let heightSide;\n let widthSide;\n\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n const dimensions = {\n availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n await apply({ ...middlewareArguments,\n ...dimensions\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n\n if (rects.floating.width !== nextDimensions.width || rects.floating.height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'inline',\n options,\n\n async fn(middlewareArguments) {\n var _await$platform$getCl;\n\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n\n const {\n padding = 2,\n x,\n y\n } = options;\n const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects.reference);\n const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n const paddingObject = getSideObjectFromPadding(padding);\n\n function getBoundingClientRect() {\n // There are two rects and they are disjoined\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n var _clientRects$find;\n\n // Find the first rect in which the point is fully inside\n return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n } // There are 2 or more connected rects\n\n\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n return fallback;\n }\n\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction isWindow(value) {\n return value && value.document && value.location && value.alert && value.setInterval;\n}\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (!isWindow(node)) {\n const ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isWindow(node) ? '' : node ? (node.nodeName || '').toLowerCase() : '';\n}\n\nfunction getUAString() {\n const uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n }\n\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle(element); // 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 return css.transform !== 'none' || css.perspective !== 'none' || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat\n value => {\n const contain = css.contain;\n return contain != null ? contain.includes(value) : false;\n });\n}\nfunction isLayoutViewport() {\n // Not Safari\n return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways\n // • Always-visible scrollbar or not\n // • Width of <html>, etc.\n // const vV = win.visualViewport;\n // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;\n\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n const clientRect = element.getBoundingClientRect();\n let scaleX = 1;\n let 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 const win = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scaleX;\n const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scaleY;\n const width = clientRect.width / scaleX;\n const height = clientRect.height / scaleY;\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\nfunction isScaled(element) {\n const rect = getBoundingClientRect(element);\n return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, // @ts-ignore - checked above (TS 4.1 compat)\n isOffsetParentAnElement && isScaled(offsetParent), strategy === 'fixed');\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.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}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // @ts-ignore\n node.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n node.parentNode || ( // DOM Element detected\n isShadowRoot(node) ? node.host : null) || // ShadowRoot detected\n getDocumentElement(node) // fallback\n\n );\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n const parent = currentNode.parentNode;\n currentNode = isShadowRoot(parent) ? parent.host : parent;\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\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let 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' && !isContainingBlock(offsetParent))) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n if (isHTMLElement(element)) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n\n const rect = getBoundingClientRect(element);\n return {\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n\n if (offsetParent === documentElement) {\n return rect;\n }\n\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } // This doesn't appear to be need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n\n }\n\n return { ...rect,\n x: rect.x - scroll.scrollLeft + offsets.x,\n y: rect.y - scroll.scrollTop + offsets.y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.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,\n height,\n x,\n y\n };\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n\n if (isLastTraversableNode(parentNode)) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n\n if (list === void 0) {\n list = [];\n }\n\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n const target = isBody ? [win].concat(win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []) : scrollableAncestor;\n const updatedList = list.concat(target);\n return isBody ? updatedList : // @ts-ignore: isBody tells us target will be an HTMLElement here\n updatedList.concat(getOverflowAncestors(target));\n}\n\nfunction contains(parent, child) {\n const rootNode = child.getRootNode == null ? void 0 : 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 let next = child;\n\n do {\n // use `===` replace node.isSameNode()\n if (next && parent === next) {\n return true;\n } // @ts-ignore: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n }\n\n return false;\n}\n\nfunction getNearestParentCapableOfEscapingClipping(element, clippingAncestors) {\n let currentNode = element;\n\n while (currentNode && !isLastTraversableNode(currentNode) && // @ts-expect-error\n !clippingAncestors.includes(currentNode)) {\n if (isElement(currentNode) && ['absolute', 'fixed'].includes(getComputedStyle(currentNode).position)) {\n break;\n }\n\n const parentNode = getParentNode(currentNode);\n currentNode = isShadowRoot(parentNode) ? parentNode.host : parentNode;\n }\n\n return currentNode;\n}\n\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, false, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n return {\n top,\n left,\n x: left,\n y: top,\n right: left + element.clientWidth,\n bottom: top + element.clientHeight,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getClientRectFromClippingAncestor(element, clippingParent, strategy) {\n if (clippingParent === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n\n if (isElement(clippingParent)) {\n return getInnerBoundingClientRect(clippingParent, strategy);\n }\n\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping ancestor\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingAncestors(element) {\n const clippingAncestors = getOverflowAncestors(element);\n const nearestEscapableParent = getNearestParentCapableOfEscapingClipping(element, clippingAncestors);\n let clipperElement = null;\n\n if (nearestEscapableParent && isHTMLElement(nearestEscapableParent)) {\n const offsetParent = getOffsetParent(nearestEscapableParent);\n\n if (isOverflowElement(nearestEscapableParent)) {\n clipperElement = nearestEscapableParent;\n } else if (isHTMLElement(offsetParent)) {\n clipperElement = offsetParent;\n }\n }\n\n if (!isElement(clipperElement)) {\n return [];\n } // @ts-ignore isElement check ensures we return Array<Element>\n\n\n return clippingAncestors.filter(clippingAncestors => clipperElement && isElement(clippingAncestors) && contains(clippingAncestors, clipperElement) && getNodeName(clippingAncestors) !== 'body');\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors\n\n\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const mainClippingAncestors = boundary === 'clippingAncestors' ? getClippingAncestors(element) : [].concat(boundary);\n const clippingAncestors = [...mainClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, 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 }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getElementRects: _ref => {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n return {\n reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy),\n floating: { ...getDimensions(floating),\n x: 0,\n y: 0\n }\n };\n },\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n observer.observe(floating);\n }\n\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n\n if (animationFrame) {\n frameLoop();\n }\n\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n\n update();\n return () => {\n var _observer;\n\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\n\nconst computePosition = (reference, floating, options) => computePosition$1(reference, floating, {\n platform,\n ...options\n});\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","/**\n * Auto-generated file. Do not edit directly.\n */\n\nexport const assetFontDmSansName = \"DM Sans\";\nexport const assetFontDmSansWoff2Bold = \"DMSans-Bold.woff2\";\nexport const assetFontDmSansWoff2BoldItalic = \"DMSans-BoldItalic.woff2\";\nexport const assetFontDmSansWoff2Italic = \"DMSans-Italic.woff2\";\nexport const assetFontDmSansWoff2Medium = \"DMSans-Medium.woff2\";\nexport const assetFontDmSansWoff2MediumItalic = \"DMSans-MediumItalic.woff2\";\nexport const assetFontDmSansWoff2Regular = \"DMSans-Regular.woff2\";\nexport const assetFontLatoName = \"Lato\";\nexport const assetFontLatoWoffBlack = \"Lato-Black.woff\";\nexport const assetFontLatoWoff2Black = \"Lato-Black.woff2\";\nexport const assetFontLatoWoffBlackItalic = \"Lato-BlackItalic.woff\";\nexport const assetFontLatoWoff2BlackItalic = \"Lato-BlackItalic.woff2\";\nexport const assetFontLatoWoffBold = \"Lato-Bold.woff\";\nexport const assetFontLatoWoff2Bold = \"Lato-Bold.woff2\";\nexport const assetFontLatoWoffBoldItalic = \"Lato-BoldItalic.woff\";\nexport const assetFontLatoWoff2BoldItalic = \"Lato-BoldItalic.woff2\";\nexport const assetFontLatoWoffHairline = \"Lato-Hairline.woff\";\nexport const assetFontLatoWoff2Hairline = \"Lato-Hairline.woff2\";\nexport const assetFontLatoWoffHairlineItalic = \"Lato-HairlineItalic.woff\";\nexport const assetFontLatoWoff2HairlineItalic = \"Lato-HairlineItalic.woff2\";\nexport const assetFontLatoWoffHeavy = \"Lato-Heavy.woff\";\nexport const assetFontLatoWoff2Heavy = \"Lato-Heavy.woff2\";\nexport const assetFontLatoWoffHeavyItalic = \"Lato-HeavyItalic.woff\";\nexport const assetFontLatoWoff2HeavyItalic = \"Lato-HeavyItalic.woff2\";\nexport const assetFontLatoWoffItalic = \"Lato-Italic.woff\";\nexport const assetFontLatoWoff2Italic = \"Lato-Italic.woff2\";\nexport const assetFontLatoWoffLight = \"Lato-Light.woff\";\nexport const assetFontLatoWoff2Light = \"Lato-Light.woff2\";\nexport const assetFontLatoWoffLightItalic = \"Lato-LightItalic.woff\";\nexport const assetFontLatoWoff2LightItalic = \"Lato-LightItalic.woff2\";\nexport const assetFontLatoWoffMedium = \"Lato-Medium.woff\";\nexport const assetFontLatoWoff2Medium = \"Lato-Medium.woff2\";\nexport const assetFontLatoWoffMediumItalic = \"Lato-MediumItalic.woff\";\nexport const assetFontLatoWoff2MediumItalic = \"Lato-MediumItalic.woff2\";\nexport const assetFontLatoWoffRegular = \"Lato-Regular.woff\";\nexport const assetFontLatoWoff2Regular = \"Lato-Regular.woff2\";\nexport const assetFontLatoWoffSemibold = \"Lato-Semibold.woff\";\nexport const assetFontLatoWoff2Semibold = \"Lato-Semibold.woff2\";\nexport const assetFontLatoWoffSemiboldItalic = \"Lato-SemiboldItalic.woff\";\nexport const assetFontLatoWoff2SemiboldItalic = \"Lato-SemiboldItalic.woff2\";\nexport const assetFontLatoWoffThin = \"Lato-Thin.woff\";\nexport const assetFontLatoWoff2Thin = \"Lato-Thin.woff2\";\nexport const assetFontLatoWoffThinItalic = \"Lato-ThinItalic.woff\";\nexport const assetFontLatoWoff2ThinItalic = \"Lato-ThinItalic.woff2\";\nexport const assetFontAzeretMonoName = \"Azeret Mono\";\nexport const assetFontAzeretMonoWoff2Regular = \"AzeretMono-Regular.woff2\";\nexport const colorBaseWhite = \"#ffffff\";\nexport const colorBaseBlack = \"#000000\";\nexport const colorBaseNeutral100 = \"#f2f4f7\";\nexport const colorBaseNeutral200 = \"#ebecf0\";\nexport const colorBaseNeutral300 = \"#d7dbe0\";\nexport const colorBaseNeutral400 = \"#697687\";\nexport const colorBaseNeutral500 = \"#515c6c\";\nexport const colorBaseNeutral600 = \"#394251\";\nexport const colorBaseNeutral700 = \"#1b1f26\";\nexport const colorBaseNeutralDark400 = \"#697687\";\nexport const colorBaseBrand100 = \"#c9e5e8\";\nexport const colorBaseBrand200 = \"#2db3c3\";\nexport const colorBaseBrand300 = \"#29a3b1\";\nexport const colorBaseBrand400 = \"#008194\";\nexport const colorBaseBrand500 = \"#017384\";\nexport const colorBaseBrand600 = \"#026371\";\nexport const colorBaseBrand700 = \"#175b63\";\nexport const colorBaseBrandDark400 = \"#93b4f2\";\nexport const colorBaseBrandDark500 = \"#93b4f2\";\nexport const colorBaseBrandDark600 = \"#93b4f2\";\nexport const colorBaseGreen100 = \"#d4ede4\";\nexport const colorBaseGreen200 = \"#00bb7d\";\nexport const colorBaseGreen300 = \"#00aa71\";\nexport const colorBaseGreen400 = \"#008458\";\nexport const colorBaseGreen500 = \"#00754e\";\nexport const colorBaseGreen600 = \"#006946\";\nexport const colorBaseGreen700 = \"#005f40\";\nexport const colorBaseOrange100 = \"#ffdea8\";\nexport const colorBaseOrange200 = \"#ffd694\";\nexport const colorBaseOrange300 = \"#ffce80\";\nexport const colorBaseOrange400 = \"#ebb663\";\nexport const colorBaseOrange500 = \"#d6a75a\";\nexport const colorBaseOrange600 = \"#b0853e\";\nexport const colorBaseOrange700 = \"#9f6100\";\nexport const colorBaseRed100 = \"#fbc7bb\";\nexport const colorBaseRed200 = \"#f68368\";\nexport const colorBaseRed300 = \"#f46a49\";\nexport const colorBaseRed400 = \"#d9340d\";\nexport const colorBaseRed500 = \"#c22e0b\";\nexport const colorBaseRed600 = \"#ae2a0a\";\nexport const colorBaseRed700 = \"#9e2609\";\nexport const colorThemePrimaryBg = \"#008194\";\nexport const colorThemePrimaryBgHover = \"#017384\";\nexport const colorThemePrimaryBgActive = \"#026371\";\nexport const colorThemePrimaryFill = \"#ffffff\";\nexport const colorThemePrimaryFillHover = \"#ffffff\";\nexport const colorThemePrimaryFillActive = \"#ffffff\";\nexport const colorThemePrimaryText = \"#008194\";\nexport const colorThemePrimaryTextHover = \"#017384\";\nexport const colorThemePrimaryTextActive = \"#026371\";\nexport const colorThemePrimaryDarkBg = \"#93b4f2\";\nexport const colorThemePrimaryDarkBgHover = \"#93b4f2\";\nexport const colorThemePrimaryDarkBgActive = \"#93b4f2\";\nexport const colorThemePrimaryDarkFill = \"#000000\";\nexport const colorThemePrimaryDarkFillHover = \"#000000\";\nexport const colorThemePrimaryDarkFillActive = \"#000000\";\nexport const colorThemePrimaryDarkText = \"#93b4f2\";\nexport const colorThemePrimaryDarkTextHover = \"#93b4f2\";\nexport const colorThemePrimaryDarkTextActive = \"#93b4f2\";\nexport const colorThemeSecondaryBg = \"#697687\";\nexport const colorThemeSecondaryBgHover = \"#697687\";\nexport const colorThemeSecondaryBgActive = \"#697687\";\nexport const colorThemeSecondaryFill = \"#ffffff\";\nexport const colorThemeSecondaryFillHover = \"#ffffff\";\nexport const colorThemeSecondaryFillActive = \"#ffffff\";\nexport const colorThemeSecondaryText = \"#000000\";\nexport const colorThemeSecondaryTextHover = \"#000000\";\nexport const colorThemeSecondaryTextActive = \"#000000\";\nexport const colorThemeSecondaryDarkBg = \"#697687\";\nexport const colorThemeSecondaryDarkBgHover = \"#697687\";\nexport const colorThemeSecondaryDarkBgActive = \"#697687\";\nexport const colorThemeSecondaryDarkFill = \"#000000\";\nexport const colorThemeSecondaryDarkFillHover = \"#000000\";\nexport const colorThemeSecondaryDarkFillActive = \"#000000\";\nexport const colorThemeSecondaryDarkText = \"#ffffff\";\nexport const colorThemeSecondaryDarkTextHover = \"#ffffff\";\nexport const colorThemeSecondaryDarkTextActive = \"#ffffff\";\nexport const colorThemeSuccessBg = \"#008458\";\nexport const colorThemeSuccessBgHover = \"#00754e\";\nexport const colorThemeSuccessBgActive = \"#006946\";\nexport const colorThemeSuccessFill = \"#ffffff\";\nexport const colorThemeSuccessFillHover = \"#ffffff\";\nexport const colorThemeSuccessFillActive = \"#ffffff\";\nexport const colorThemeSuccessText = \"#008458\";\nexport const colorThemeSuccessTextHover = \"#00754e\";\nexport const colorThemeSuccessTextActive = \"#006946\";\nexport const colorThemeWarningBg = \"#ffce80\";\nexport const colorThemeWarningBgHover = \"#ffd694\";\nexport const colorThemeWarningBgActive = \"#ffdea8\";\nexport const colorThemeWarningFill = \"#000000\";\nexport const colorThemeWarningFillHover = \"#000000\";\nexport const colorThemeWarningFillActive = \"#000000\";\nexport const colorThemeWarningText = \"#9f6100\";\nexport const colorThemeWarningTextHover = \"#9f6100\";\nexport const colorThemeWarningTextActive = \"#9f6100\";\nexport const colorThemeDangerBg = \"#d9340d\";\nexport const colorThemeDangerBgHover = \"#c22e0b\";\nexport const colorThemeDangerBgActive = \"#ae2a0a\";\nexport const colorThemeDangerFill = \"#ffffff\";\nexport const colorThemeDangerFillHover = \"#ffffff\";\nexport const colorThemeDangerFillActive = \"#ffffff\";\nexport const colorThemeDangerText = \"#d9340d\";\nexport const colorThemeDangerTextHover = \"#c22e0b\";\nexport const colorThemeDangerTextActive = \"#ae2a0a\";\nexport const colorUiBackgroundCanvas = \"#f2f4f7\";\nexport const colorUiBackgroundBody = \"#ffffff\";\nexport const colorUiBackgroundBodyDark = \"#1b1f26\";\nexport const colorUiBackgroundMuted = \"#ebecf0\";\nexport const colorUiBackgroundInput = \"#ffffff\";\nexport const colorUiBackgroundInputDisabled = \"#f2f4f7\";\nexport const colorUiBackgroundSkeleton = \"#ebecf0\";\nexport const colorUiBackgroundSkeletonHighlight = \"#d7dbe0\";\nexport const colorUiBackgroundTooltip = \"#000000\";\nexport const colorUiBackgroundBackdrop = \"#000000\";\nexport const colorUiBackgroundSelectPill = \"#f2f4f7\";\nexport const colorUiBorderLight = \"#f2f4f7\";\nexport const colorUiBorderDefault = \"#ebecf0\";\nexport const colorUiBorderDark = \"#d7dbe0\";\nexport const colorUiBorderFocus = \"#0071ff\";\nexport const colorUiFontHead = \"#000000\";\nexport const colorUiFontHeadDark = \"#ffffff\";\nexport const colorUiFontBody = \"#000000\";\nexport const colorUiFontBodyDark = \"#ffffff\";\nexport const colorUiFontMono = \"#000000\";\nexport const colorUiFontMonoDark = \"#ffffff\";\nexport const colorUiFontMuted = \"#697687\";\nexport const colorUiFontQuote = \"#697687\";\nexport const colorUiFontTooltip = \"#ffffff\";\nexport const fontFamilyHead = \"Lato\";\nexport const fontFamilyBody = \"Lato\";\nexport const fontFamilyMono = \"Azeret Mono\";\nexport const fontFamilyEmoji = \"''\";\nexport const fontWeightHead = 500;\nexport const fontWeightBody = 400;\nexport const fontWeightMono = 400;\nexport const fontDecorationLink = \"none\";\nexport const fontDecorationLinkHover = \"underline\";\nexport const fontDecorationLinkButton = \"none\";\nexport const fontDecorationLinkButtonHover = \"none\";\nexport const opacityDisabled = 0.65;\nexport const opacityBackdrop = 0.6;\nexport const opacityTooltip = 1;\nexport const sizeBorderRadiusL = \"0.5rem\";\nexport const sizeBorderRadiusM = \"0.25rem\";\nexport const sizeBorderRadiusS = \"0.125rem\";\nexport const sizeFontHead1 = \"1.75rem\";\nexport const sizeFontHead2 = \"1.5rem\";\nexport const sizeFontHead3 = \"1.25rem\";\nexport const sizeFontHead4 = \"1.125rem\";\nexport const sizeFontHead5 = \"0.9375rem\";\nexport const sizeFontHead6 = \"0.875rem\";\nexport const sizeFontBodyXl = \"1.25rem\";\nexport const sizeFontBodyL = \"1.125rem\";\nexport const sizeFontBodyM = \"0.9375rem\";\nexport const sizeFontBodyS = \"0.875rem\";\nexport const sizeFontBodyXs = \"0.75rem\";\nexport const sizeFontMonoXl = \"1.125rem\";\nexport const sizeFontMonoL = \"0.9375rem\";\nexport const sizeFontMonoM = \"0.875rem\";\nexport const sizeFontMonoS = \"0.75rem\";\nexport const sizeFontMonoXs = \"0.625rem\";\nexport const sizeLineHead1 = \"2rem\";\nexport const sizeLineHead2 = \"1.75rem\";\nexport const sizeLineHead3 = \"1.5rem\";\nexport const sizeLineHead4 = \"1.5rem\";\nexport const sizeLineHead5 = \"1.25rem\";\nexport const sizeLineHead6 = \"1rem\";\nexport const sizeLineBodyXl = \"1.5rem\";\nexport const sizeLineBodyL = \"1.5rem\";\nexport const sizeLineBodyM = \"1.25rem\";\nexport const sizeLineBodyS = \"1rem\";\nexport const sizeLineBodyXs = \"1rem\";\nexport const sizeLineMonoXl = \"1.5rem\";\nexport const sizeLineMonoL = \"1.25rem\";\nexport const sizeLineMonoM = \"1.125rem\";\nexport const sizeLineMonoS = \"1rem\";\nexport const sizeLineMonoXs = \"0.875rem\";\nexport const sizeModalS = \"400rem\";\nexport const sizeModalM = \"600rem\";\nexport const sizeModalL = \"800rem\";\nexport const sizeScreenXs = \"540rem\";\nexport const sizeScreenS = \"768rem\";\nexport const sizeScreenM = \"992rem\";\nexport const sizeScreenL = \"1200rem\";\nexport const sizeScreenXl = \"1400rem\";\nexport const sizeSpacingXl = \"2rem\";\nexport const sizeSpacingL = \"1.5rem\";\nexport const sizeSpacingM = \"1rem\";\nexport const sizeSpacingS = \"0.5rem\";\nexport const sizeSpacingXs = \"0.25rem\";\nexport const timeTransitionL = 500;\nexport const timeTransitionM = 250;\nexport const timeTransitionS = 125;\nexport const timeDelayL = 500;\nexport const timeDelayM = 250;\nexport const timeDelayS = 125;\nexport const timeDurationL = 1000;\nexport const timeDurationM = 500;\nexport const timeDurationS = 250;","@import 'variables';\n@import 'mixins';\n\n$-min-width: 8rem;\n$-max-width: 16rem;\n$-min-height: 2rem;\n$-max-height: calc(100vh - 48px);\n\n:host {\n display: contents;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n::slotted(nav) {\n padding-top: $cat-body-margin-bottom * 0.5;\n padding-bottom: $cat-body-margin-bottom * 0.5;\n min-width: $-min-width;\n max-width: $-max-width;\n}\n\n.content {\n position: absolute;\n background: cat-token('color.ui.background.body');\n display: none;\n -webkit-overflow-scrolling: touch;\n min-height: $-min-height;\n max-height: $-max-height;\n @include cat-elevation(1);\n border-radius: cat-border-radius('m');\n z-index: $cat-dropdown-z-index;\n opacity: 0;\n transition: transform cat-token('time.transition.s') cubic-bezier(0.3, 0, 0.8, 0.15),\n opacity cat-token('time.transition.s') cubic-bezier(0.3, 0, 0.8, 0.15);\n\n &[data-placement^='top'] {\n transform: translateY(1rem);\n }\n\n &[data-placement^='left'] {\n transform: translateX(1rem);\n }\n\n &[data-placement^='right'] {\n transform: translateX(-1rem);\n }\n\n &[data-placement^='bottom'] {\n transform: translateY(-1rem);\n }\n\n &.show {\n opacity: 1;\n transform: translateX(0);\n transform: translateY(0);\n transition: transform cat-token('time.transition.l') cubic-bezier(0.05, 0.7, 0.1, 1),\n opacity cat-token('time.transition.l') cubic-bezier(0.05, 0.7, 0.1, 1);\n }\n\n &.overflow-auto {\n overflow: auto;\n }\n}\n","import { autoUpdate, computePosition, flip, offset, Placement } from '@floating-ui/dom';\nimport { timeTransitionS } from '@haiilo/catalyst-tokens';\nimport { Component, Event, EventEmitter, h, Host, Listen, Method, Prop } from '@stencil/core';\nimport * as focusTrap from 'focus-trap';\nimport { FocusableElement, tabbable } from 'tabbable';\nimport firstTabbable from '../../utils/first-tabbable';\n\nlet nextUniqueId = 0;\n\n@Component({\n tag: 'cat-dropdown',\n styleUrl: 'cat-dropdown.scss',\n shadow: true\n})\nexport class CatDropdown {\n private static readonly OFFSET = 4;\n private readonly id = nextUniqueId++;\n private triggerSlot!: HTMLSlotElement;\n private trigger?: FocusableElement;\n private content!: HTMLElement;\n private trap?: focusTrap.FocusTrap;\n private keyListener?: (event: KeyboardEvent) => void;\n private isOpen: boolean | null = false;\n\n /**\n * The placement of the dropdown.\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * Do not close the dropdown on outside clicks.\n */\n @Prop() noAutoClose = false;\n\n /**\n * Allow overflow when dropdown is open.\n */\n @Prop() overflow = false;\n\n /**\n * Emitted when the dropdown is opened.\n */\n @Event() catOpen!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the dropdown is closed.\n */\n @Event() catClose!: EventEmitter<FocusEvent>;\n\n @Listen('catClick')\n clickHandler(event: CustomEvent<MouseEvent>) {\n // we need to delay the initialization of the trigger until first,\n // interaction because the element might still be hidden (and thus not\n // tabbable) if contained in another Stencil web component\n if (!this.trigger) {\n this.initTrigger();\n this.toggle();\n }\n\n // hide dropdown on button click\n if (!this.noAutoClose && event.composedPath().includes(this.content)) {\n this.close();\n }\n }\n\n /**\n * Toggles the dropdown.\n */\n async toggle(): Promise<void> {\n this.isOpen ? this.close() : this.open();\n }\n\n /**\n * Opens the dropdown.\n */\n async open(): Promise<void> {\n if (this.isOpen === null) {\n return; // busy\n }\n\n this.isOpen = null;\n this.content.style.display = 'block';\n // give CSS transition time to apply\n setTimeout(() => {\n this.isOpen = true;\n this.content.classList.add('show');\n this.trigger?.setAttribute('aria-expanded', 'true');\n this.catOpen.emit();\n this.trap = this.trap\n ? this.trap.updateContainerElements(this.content)\n : focusTrap.createFocusTrap(this.content, {\n tabbableOptions: {\n getShadowRoot: true\n },\n allowOutsideClick: true,\n clickOutsideDeactivates: event =>\n !this.noAutoClose &&\n !event.composedPath().includes(this.content) &&\n (!this.trigger || !event.composedPath().includes(this.trigger)),\n onPostDeactivate: () => this.close()\n });\n this.trap.activate();\n });\n }\n\n /**\n * Closes the dropdown.\n */\n @Method()\n async close(): Promise<void> {\n if (this.isOpen === null) {\n return; // busy\n }\n\n this.isOpen = null;\n this.content.classList.remove('show');\n // give CSS transition time to apply\n setTimeout(() => {\n this.isOpen = false;\n this.content.classList.remove('show');\n this.content.style.display = '';\n this.trigger?.setAttribute('aria-expanded', 'false');\n this.trap?.deactivate();\n this.catClose.emit();\n }, timeTransitionS);\n }\n\n componentDidLoad(): void {\n this.keyListener = event => {\n if (this.isOpen && ['ArrowDown', 'ArrowUp'].includes(event.key)) {\n const targetElements = tabbable(this.content, { includeContainer: false, getShadowRoot: true });\n const activeElement = firstTabbable(document.activeElement);\n const activeIdx = activeElement ? targetElements.indexOf(activeElement) : -1;\n const activeOff = event.key === 'ArrowDown' ? 1 : -1;\n const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;\n targetElements[targetIdx].focus();\n event.preventDefault();\n }\n };\n document.addEventListener('keydown', this.keyListener);\n }\n\n disconnectedCallback(): void {\n if (this.keyListener) {\n document.removeEventListener('keydown', this.keyListener);\n }\n }\n\n render() {\n return (\n <Host>\n <slot name=\"trigger\" ref={el => (this.triggerSlot = el as HTMLSlotElement)}></slot>\n <div\n id={this.contentId}\n class={{ content: true, 'overflow-auto': !this.overflow }}\n ref={el => (this.content = el as HTMLElement)}\n >\n <slot name=\"content\"></slot>\n </div>\n </Host>\n );\n }\n\n private get contentId() {\n return `cat-dropdown-${this.id}`;\n }\n\n private initTrigger() {\n this.trigger = this.findTrigger();\n this.trigger.setAttribute('aria-haspopup', 'true');\n this.trigger.setAttribute('aria-expanded', 'false');\n this.trigger.setAttribute('aria-controls', this.contentId);\n this.trigger.addEventListener('click', () => this.toggle());\n autoUpdate(this.trigger, this.content, () => this.update());\n }\n\n private findTrigger() {\n let trigger: FocusableElement | undefined;\n const elems = this.triggerSlot?.assignedElements?.() || [];\n while (!trigger && elems.length) {\n const elem = elems.shift();\n trigger = elem?.hasAttribute('data-trigger')\n ? (elem as HTMLElement)\n : elem?.querySelector('[data-trigger]') ?? undefined;\n }\n if (!trigger) {\n trigger = firstTabbable(this.triggerSlot);\n }\n if (!trigger) {\n throw new Error('Cannot find tabbable element. Use [data-trigger] to set the trigger.');\n }\n return trigger;\n }\n\n private update() {\n if (this.trigger) {\n computePosition(this.trigger, this.content, {\n placement: this.placement,\n middleware: [offset(CatDropdown.OFFSET), flip()]\n }).then(({ x, y, placement }) => {\n this.content.dataset.placement = placement;\n Object.assign(this.content.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n });\n }\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n$icon-sizes: (\n 'xl': 1.75rem,\n 'l': 1.5rem,\n 'm': 1.25rem,\n 's': 1rem,\n 'xs': 0.75rem\n);\n\n:host {\n /**\n * @prop --cat-icon-ratio: The aspect ratio of the avatar.\n */\n display: inline-flex;\n vertical-align: middle;\n @include cat-select(none);\n}\n\n:host([hidden]) {\n display: none;\n}\n\nspan {\n display: inline-flex;\n}\n\nsvg {\n fill: currentColor;\n stroke: none;\n transform-origin: center center;\n height: 1em;\n width: calc(var(--cat-icon-ratio, 1) * 1em);\n}\n\n// ----- size\n\n@mixin size($size) {\n .icon-#{$size} svg {\n font-size: map.get($icon-sizes, $size);\n }\n}\n\n@include size('xs');\n@include size('s');\n@include size('m');\n@include size('l');\n@include size('xl');\n","import { Component, h, Prop } from '@stencil/core';\nimport { CatIconRegistry } from './cat-icon-registry';\n\n/**\n * Icons are used to provide additional meaning or in places where text label\n * doesn't fit.\n *\n * @part icon - The span element wrapping the SVG icon.\n */\n@Component({\n tag: 'cat-icon',\n styleUrl: 'cat-icon.scss',\n shadow: true\n})\nexport class CatIcon {\n private readonly iconRegistry = CatIconRegistry.getInstance();\n\n /**\n * The name of the icon.\n */\n @Prop() icon = '';\n\n /**\n * The size of the icon.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' | 'inline' = 'm';\n\n /**\n * Adds accessible label for the icon that is only shown for screen\n * readers. The `aria-hidden` attribute will be set if no label is present.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n render() {\n return (\n <span\n innerHTML={this.iconRegistry.getIcon(this.icon)}\n aria-label={this.a11yLabel}\n aria-hidden={this.a11yLabel ? null : 'true'}\n part=\"icon\"\n class={{\n icon: true,\n [`icon-${this.size}`]: this.size !== 'inline'\n }}\n ></span>\n );\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n @include cat-body('m');\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.input-wrapper {\n display: flex;\n align-items: stretch;\n gap: 0.75rem;\n padding: 0 0.75rem;\n height: 2.5rem;\n overflow: hidden;\n background: cat-token('color.ui.background.input');\n border-radius: cat-border-radius('m');\n box-shadow: 0 0 0 1px cat-token('color.ui.border.dark');\n transition: box-shadow cat-token('time.transition.s') linear;\n\n &.input-round {\n border-radius: 10rem;\n }\n\n &.input-disabled {\n background: cat-token('color.ui.background.inputDisabled');\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n }\n\n &:not(.input-disabled) {\n &:hover {\n box-shadow: 0 0 0 2px cat-token('color.ui.border.dark');\n }\n\n &:focus-within {\n outline: 2px solid cat-token('color.ui.border.focus');\n }\n }\n}\n\n:host(.cat-error) {\n .input-wrapper {\n box-shadow: 0 0 0 1px cat-token('color.theme.danger.bg');\n\n &:not(.input-disabled):hover {\n box-shadow: 0 0 0 2px cat-token('color.theme.danger.bg');\n }\n }\n}\n\nlabel {\n align-self: flex-start;\n\n &.hidden {\n @include cat-visually-hidden;\n }\n}\n\n.input-optional {\n margin-left: 0.25rem;\n @include cat-body('xs');\n color: cat-token('color.ui.font.muted');\n}\n\n.text-prefix,\n.text-suffix {\n display: inline-flex;\n align-items: center;\n @include cat-select(none);\n}\n\n.text-prefix {\n border-right: 1px solid cat-token('color.ui.border.dark');\n padding-right: 0.75rem;\n}\n\n.text-suffix {\n border-left: 1px solid cat-token('color.ui.border.dark');\n padding-left: 0.75rem;\n}\n\n.icon-prefix,\n.icon-suffix {\n align-self: center;\n}\n\n.input-inner-wrapper {\n display: flex;\n align-items: center;\n position: relative;\n flex: 1 1 auto;\n}\n\ninput {\n font: inherit;\n margin: 0;\n padding: 0;\n width: 100%;\n min-width: 0;\n border: none;\n outline: none;\n background: none;\n\n .input-disabled & {\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n }\n\n &.has-clearable {\n padding-right: 1.5rem;\n }\n\n &::placeholder {\n color: cat-token('color.ui.font.muted');\n }\n}\n\n.clearable {\n position: absolute;\n top: calc(50% - 1rem);\n right: -0.5rem;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\nimport { InputType } from './input-type';\n\nlet nextUniqueId = 0;\n\n/**\n * Inputs are used to allow users to provide text input when the expected input\n * is short. As well as plain text, Input supports various types of text,\n * including passwords and numbers.\n *\n * @slot hint - Optional hint element to be displayed with the input.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n * @part prefix - The text prefix.\n * @part suffix - The text suffix.\n */\n@Component({\n tag: 'cat-input',\n styleUrl: 'cat-input.scss',\n shadow: true\n})\nexport class CatInput {\n private readonly id = `cat-input-${nextUniqueId++}`;\n private input!: HTMLInputElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Hint for form autofill feature.\n */\n @Prop() autoComplete?: string;\n\n /**\n * Whether the input should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the input is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Optional hint text(s) to be displayed with the input.\n */\n @Prop() hint?: string | string[];\n\n /**\n * The name of an icon to be displayed in the input.\n */\n @Prop() icon?: string;\n\n /**\n * Display the icon on the right.\n */\n @Prop() iconRight = false;\n\n /**\n * The label for the input.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A maximum value for date, time and numeric values.\n */\n @Prop() max?: number | string;\n\n /**\n * A maximum length (number of characters) for textual values.\n */\n @Prop() maxLength?: number;\n\n /**\n * A minimum value for date, time and numeric values.\n */\n @Prop() min?: number | string;\n\n /**\n * A minimum length (number of characters) for textual values.\n */\n @Prop() minLength?: number;\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name = '';\n\n /**\n * The placeholder text to display within the input.\n */\n @Prop() placeholder?: string;\n\n /**\n * A textual prefix to be displayed in the input.\n */\n @Prop() textPrefix?: string;\n\n /**\n * A textual suffix to be displayed in the input.\n */\n @Prop() textSuffix?: string;\n\n /**\n * The value is not editable.\n */\n @Prop() readonly = false;\n\n /**\n * A value is required or must be check for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Use round input edges.\n */\n @Prop() round = false;\n\n /**\n * Type of form control.\n */\n @Prop() type: InputType = 'text';\n\n /**\n * The value of the control.\n */\n @Prop({ mutable: true }) value?: string | number;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the input received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on input', this);\n }\n }\n\n /**\n * Programmatically move focus to the input. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the input. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n /**\n * Programmatically simulate a click on the input.\n */\n @Method()\n async doClick(): Promise<void> {\n this.input.click();\n }\n\n /**\n * Clear the input.\n */\n @Method()\n async clear(): Promise<void> {\n this.value = '';\n }\n\n render() {\n return (\n <Host>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={this.id} class={{ hidden: this.labelHidden }}>\n <span part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n {!this.required && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n </span>\n </label>\n )}\n <div\n class={{\n 'input-wrapper': true,\n 'input-round': this.round,\n 'input-disabled': this.disabled\n }}\n onClick={() => this.input.focus()}\n >\n {this.textPrefix && (\n <span class=\"text-prefix\" part=\"prefix\">\n {this.textPrefix}\n </span>\n )}\n {this.icon && !this.iconRight && <cat-icon icon={this.icon} class=\"icon-prefix\" size=\"l\"></cat-icon>}\n <div class=\"input-inner-wrapper\">\n <input\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.id}\n class={{\n 'has-clearable': this.clearable && !this.disabled\n }}\n autocomplete={this.autoComplete}\n disabled={this.disabled}\n max={this.max}\n maxlength={this.maxLength}\n min={this.min}\n minlength={this.minLength}\n name={this.name}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n type={this.type}\n value={this.value}\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n ></input>\n {this.clearable && !this.disabled && this.value && (\n <cat-button\n class=\"clearable\"\n icon=\"cross-circle-outlined\"\n icon-only=\"true\"\n size=\"s\"\n variant=\"text\"\n a11y-label={i18n.t('input.clear')}\n onClick={this.clear.bind(this)}\n ></cat-button>\n )}\n </div>\n {this.icon && this.iconRight && <cat-icon icon={this.icon} class=\"icon-suffix\" size=\"l\"></cat-icon>}\n {this.textSuffix && (\n <span class=\"text-suffix\" part=\"suffix\">\n {this.textSuffix}\n </span>\n )}\n </div>\n {this.hintSection}\n </Host>\n );\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private onInput(event: Event) {\n this.value = this.input.value;\n this.catChange.emit(event);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n$button-sizes: (\n 'xl': 3.5rem,\n 'l': 3rem,\n 'm': 2.5rem,\n 's': 2rem,\n 'xs': 1.5rem\n);\n\n:host {\n display: inline-block;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nol {\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\nli {\n display: inline-flex;\n justify-content: center;\n\n &.dots {\n @include cat-select(none);\n }\n}\n\n// ----- variant\n\n:host([variant='outlined']) {\n ol {\n gap: 0.75rem;\n }\n}\n\n// ----- size\n\n@mixin size($size, $fontSize) {\n .cat-pagination-#{$size} {\n li.dots,\n li.text {\n height: map.get($button-sizes, $size);\n line-height: map.get($button-sizes, $size);\n font-size: cat-body-font-size($fontSize);\n }\n\n li.dots {\n width: map.get($button-sizes, $size);\n }\n }\n\n :host([variant='outlined']) {\n .cat-pagination-#{$size} {\n gap: map.get($button-sizes, $size) * 0.25;\n }\n }\n}\n\n@include size('xs', 's');\n@include size('s', 'm');\n@include size('m', 'm');\n@include size('l', 'm');\n@include size('xl', 'l');\n","import { Component, h, Prop } from '@stencil/core';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\n/**\n * A navigation component to switch between different pages of paged chunks of\n * data such as a table. Pagination is built with list HTML elements and a\n * wrapping `<nav>` element to identify it as a navigation section to screen\n * readers and other assistive technologies. Furthermore, the current page is\n * correctly highlighted using `aria-current`.\n */\n@Component({\n tag: 'cat-pagination',\n styleUrl: 'cat-pagination.scss',\n shadow: true\n})\nexport class CatPagination {\n /**\n * The current page.\n */\n @Prop({ mutable: true }) page = 0;\n\n /**\n * The total number of pages.\n */\n @Prop() pageCount = 1;\n\n /**\n * The number of pages to be shown around the current page.\n */\n @Prop() activePadding = 1;\n\n /**\n * The number of pages to be shown at the edges.\n */\n @Prop() sidePadding = 1;\n\n /**\n * The size of the buttons.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * The rendering style of the buttons.\n */\n @Prop() variant: 'filled' | 'outlined' | 'text' = 'text';\n\n /**\n * Use round button edges.\n */\n @Prop() round = false;\n\n /**\n * Use compact pagination mode.\n */\n @Prop() compact = false;\n\n /**\n * The icon of the \"previous\" button.\n */\n @Prop() iconPrev = 'chevron-left-outlined';\n\n /**\n * The icon of the \"next\" button.\n */\n @Prop() iconNext = 'chevron-right-outlined';\n\n render() {\n return (\n <nav role=\"navigation\">\n <ol\n class={{\n [`cat-pagination-${this.size}`]: Boolean(this.size)\n }}\n >\n <li>\n <cat-button\n variant={this.variant}\n size={this.size}\n round={this.round}\n disabled={this.isFirst}\n a11yLabel={i18n.t('pagination.prev')}\n icon={this.iconPrev}\n iconOnly\n onClick={() => (this.page = this.page - 1)}\n ></cat-button>\n </li>\n {this.content}\n <li>\n <cat-button\n variant={this.variant}\n size={this.size}\n round={this.round}\n disabled={this.isLast}\n a11yLabel={i18n.t('pagination.next')}\n icon={this.iconNext}\n iconOnly\n onClick={() => (this.page = this.page + 1)}\n ></cat-button>\n </li>\n </ol>\n </nav>\n );\n }\n\n get isFirst() {\n return this.page === 0;\n }\n\n get isLast() {\n return this.page === this.pageCount - 1;\n }\n\n get pages() {\n if (!this.sidePadding && !this.activePadding) {\n return [this.page];\n }\n\n const result = new Set<number>();\n const minPage = this.page <= this.sidePadding + this.activePadding + 1;\n const minActivepage = minPage ? this.sidePadding + 2 * this.activePadding + 2 : this.sidePadding;\n const maxPage = this.page >= this.pageCount - this.sidePadding - this.activePadding - 2;\n const maxActivepage = maxPage\n ? this.pageCount - this.sidePadding - 2 * this.activePadding - 2\n : this.pageCount - this.sidePadding;\n\n this.addSeq(result, 0, minActivepage);\n if (!minPage && !maxPage) {\n this.addSeq(result, this.page - this.activePadding, this.page + this.activePadding + 1);\n }\n this.addSeq(result, maxActivepage, this.pageCount);\n\n return [...result];\n }\n\n private addSeq(set: Set<number>, start: number, end: number) {\n const _start = this.clamp(start, 0, this.pageCount);\n const _end = this.clamp(end, 0, this.pageCount);\n Array(_end - _start)\n .fill(0)\n .forEach((_, i) => set.add(_start + i));\n }\n\n private clamp(num: number, min: number, max: number) {\n return Math.min(Math.max(num, min), max);\n }\n\n private get content() {\n if (this.compact) {\n return (\n <li class=\"text\">\n {this.page + 1}/{this.pageCount}\n </li>\n );\n }\n\n return this.pages.map((page, i) => [\n i > 0 && this.pages[i - 1] !== page - 1 ? <li class=\"dots\">…</li> : null,\n <li>\n <cat-button\n variant={this.variant}\n size={this.size}\n round={this.round}\n color={this.page === page ? 'primary' : undefined}\n active={this.page === page}\n a11yLabel={i18n.t('pagination.page', { page: page + 1 })}\n a11yCurrent={this.page === page ? 'step' : undefined}\n onClick={() => (this.page = page)}\n >\n {page + 1}\n </cat-button>\n </li>\n ]);\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n display: flex;\n gap: 0.5rem;\n @include cat-body('m');\n cursor: pointer;\n}\n\n.label-left {\n flex-direction: row-reverse;\n}\n\n.radio {\n display: flex;\n position: relative;\n align-self: flex-start;\n}\n\n.circle {\n position: absolute;\n width: 0.75rem;\n height: 0.75rem;\n background-color: cat-token('color.theme.primary.bg');\n border-radius: 10rem;\n top: calc(50% - 0.375rem);\n left: calc(50% - 0.375rem);\n visibility: hidden;\n pointer-events: none;\n}\n\ninput {\n margin: 0;\n width: 1.25rem;\n height: 1.25rem;\n appearance: none;\n background-color: cat-token('color.ui.background.input');\n border: 1px solid cat-token('color.ui.border.dark');\n border-radius: 10rem;\n cursor: inherit;\n\n &:checked {\n border-color: cat-token('color.theme.primary.bg');\n\n + .circle {\n visibility: visible;\n }\n }\n\n &:focus-visible {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n}\n\n:host(.cat-error) {\n input {\n border-color: cat-token('color.theme.danger.bg');\n }\n\n .circle {\n background-color: cat-token('color.theme.danger.bg');\n }\n}\n\n.label {\n flex: 1 1 auto;\n\n .is-hidden & {\n @include cat-visually-hidden;\n }\n}\n\n.is-disabled {\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n\n input {\n background-color: cat-token('color.ui.background.inputDisabled');\n\n &:checked {\n border-color: cat-token('color.ui.border.dark');\n }\n }\n\n .circle {\n background-color: cat-token('color.ui.border.dark');\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\n\nlet nextUniqueId = 0;\n\n/**\n * Radio Buttons are graphical interface elements that allow user to choose\n * only one of a predefined set of mutually exclusive options.\n *\n * @slot hint - Optional hint element to be displayed with the radio.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n */\n@Component({\n tag: 'cat-radio',\n styleUrl: 'cat-radio.scss',\n shadow: true\n})\nexport class CatRadio {\n private readonly id = `cat-radio-${++nextUniqueId}`;\n private input!: HTMLInputElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Whether this radio is checked.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Whether this radio is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * The label of the radio that is visible.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * The name of the radio component.\n */\n @Prop() name?: string;\n\n /**\n * Whether the radio is required.\n */\n @Prop() required = false;\n\n /**\n * The value of the radio component.\n */\n @Prop() value?: string;\n\n /**\n * Optional hint text(s) to be displayed with the radio.\n */\n @Prop() hint?: string | string[];\n\n /**\n * Whether the label should appear to the left of the radio component.\n */\n @Prop() labelLeft = false;\n\n /**\n * Emitted when the radio is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the radio received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the radio loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on radio', this);\n }\n }\n\n /**\n * Programmatically move focus to the radio button. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the radio button. Use this method\n * instead of `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n /**\n * Programmatically simulate a click on the radio button.\n */\n @Method()\n async doClick(): Promise<void> {\n this.input.click();\n }\n\n render() {\n return (\n <Host>\n <label\n htmlFor={this.id}\n class={{ 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }}\n role=\"radio\"\n aria-checked={this.checked ? 'true' : 'false'}\n >\n <span class=\"radio\">\n <input\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.id}\n type=\"radio\"\n name={this.name}\n value={this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n onInput={this.onChange.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n />\n <span class=\"circle\"></span>\n </span>\n <span class=\"label\" part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n </span>\n </label>\n {this.hintSection}\n </Host>\n );\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private onChange(event: Event) {\n this.checked = true;\n this.catChange.emit(event);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n display: block;\n}\n\n:host([hidden]) {\n display: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, Watch } from '@stencil/core';\n\n/**\n * A group of radio buttons.\n */\n@Component({\n tag: 'cat-radio-group',\n styleUrl: 'cat-radio-group.scss',\n shadow: true\n})\nexport class CatRadioGroup {\n private catRadioGroup: HTMLCatRadioElement[] = [];\n\n @Element() hostElement!: HTMLElement;\n\n /**\n * The name of the radio group component.\n */\n @Prop() name?: string;\n\n /**\n * The value of the radio group.\n */\n @Prop({ mutable: true }) value?: string;\n\n /**\n * Whether this radio group is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Adds an accessible label for the radio group that\n * it is only shown in assistive technologies, like screen readers.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n /**\n * Whether the label of the radios should appear to the left of them.\n */\n @Prop() labelLeft = false;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the radio group loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n @Watch('name')\n onNameChanged(newName?: string) {\n this.catRadioGroup.forEach(catRadio => (catRadio.name = newName));\n }\n\n @Watch('value')\n onValueChanged(newValue?: string) {\n this.catRadioGroup.forEach(catRadio => (catRadio.checked = catRadio.value === newValue));\n this.updateTabIndex();\n }\n\n @Watch('disabled')\n onDisabledChanged(disabled: boolean) {\n this.catRadioGroup.forEach(catRadio => (catRadio.disabled = disabled));\n }\n\n @Watch('labelLeft')\n onLabelLeftChanged(labelLeft: boolean) {\n this.catRadioGroup.forEach(catRadio => {\n if (labelLeft) {\n catRadio.labelLeft = labelLeft;\n }\n });\n }\n\n componentDidLoad(): void {\n this.catRadioGroup = Array.from(this.hostElement.querySelectorAll(`cat-radio`));\n this.onNameChanged(this.name);\n this.onValueChanged(this.value);\n this.onDisabledChanged(this.disabled);\n this.onLabelLeftChanged(this.labelLeft);\n }\n\n @Listen('keydown')\n onKeydown(event: KeyboardEvent): void {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(event.key) && this.catRadioGroup.length) {\n const targetElements = this.catRadioGroup.filter(catRadio => !catRadio.disabled);\n const activeElement = document.activeElement as HTMLCatRadioElement;\n const activeIdx = this.catRadioGroup.findIndex(catRadio => catRadio === activeElement);\n const activeOff = ['ArrowDown', 'ArrowRight'].includes(event.key) ? 1 : -1;\n const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;\n targetElements[targetIdx].doFocus();\n targetElements[targetIdx].shadowRoot?.querySelector('input')?.click();\n this.updateTabIndex();\n event.preventDefault();\n }\n }\n\n @Listen('input')\n onInput(event: MouseEvent): void {\n const catRadioElement = this.catRadioGroup.find(value => value === event.target);\n this.value = catRadioElement?.value;\n this.catChange.emit();\n }\n\n @Listen('blur', { capture: true })\n onBlur(event: FocusEvent): void {\n if (!event.relatedTarget) {\n this.catBlur.emit(event);\n }\n }\n\n render() {\n return (\n <div role=\"radiogroup\" aria-label={this.a11yLabel}>\n <slot></slot>\n </div>\n );\n }\n\n private updateTabIndex() {\n if (this.catRadioGroup.length) {\n this.catRadioGroup.forEach(value => value.shadowRoot?.querySelector('input')?.setAttribute('tabindex', '-1'));\n const checkedRadioIndex = this.catRadioGroup.findIndex(value => value.checked);\n this.catRadioGroup[checkedRadioIndex >= 0 ? checkedRadioIndex : 0].shadowRoot\n ?.querySelector('input')\n ?.setAttribute('tabindex', '0');\n }\n }\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n const _super = (instance) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport const UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nexport class Subscription {\n constructor(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n unsubscribe() {\n let errors;\n if (!this.closed) {\n this.closed = true;\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n add(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n }\n _hasParent(parent) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n _addParent(parent) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n _removeParent(parent) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n remove(teardown) {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\nSubscription.EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n})();\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export const config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","export const timeoutProvider = {\n setTimeout(handler, timeout, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind,\n value,\n error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nlet context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nexport class Subscriber extends Subscription {\n constructor(destination) {\n super();\n this.isStopped = false;\n if (destination) {\n this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(this);\n }\n }\n else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n static create(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n }\n next(value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n }\n error(err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null;\n }\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n _complete() {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n }\n}\nconst _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nclass ConsumerObserver {\n constructor(partialObserver) {\n this.partialObserver = partialObserver;\n }\n next(value) {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n error(err) {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n }\n complete() {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(observerOrNext, error, complete) {\n super();\n let partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined,\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n let context;\n if (this && config.useDeprecatedNextContext) {\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\nexport const EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export const observable = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nexport class Observable {\n constructor(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n this._subscribe(subscriber)\n :\n this._trySubscribe(subscriber));\n });\n return subscriber;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n });\n }\n _subscribe(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => (value = x), (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return (source) => {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexport class OperatorSubscriber extends Subscriber {\n constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n super(destination);\n this.onFinalize = onFinalize;\n this.shouldUnsubscribe = shouldUnsubscribe;\n this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n unsubscribe() {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n }\n}\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport const ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nexport class Subject extends Observable {\n constructor() {\n super();\n this.closed = false;\n this.currentObservers = null;\n this.observers = [];\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n next(value) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n error(err) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n }\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n }\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n }\n get observed() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n }\n _trySubscribe(subscriber) {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n _innerSubscribe(subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n _checkFinalizedStatuses(subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n }\n error(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n }\n complete() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n _subscribe(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n }\n}\n//# sourceMappingURL=Subject.js.map","export const dateTimestampProvider = {\n now() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n//# sourceMappingURL=Action.js.map","export const intervalProvider = {\n setInterval(handler, timeout, ...args) {\n const { delegate } = intervalProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, _id, delay = 0) {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(_scheduler, id, delay = 0) {\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n intervalProvider.clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, _delay) {\n let errored = false;\n let errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n super.unsubscribe();\n }\n }\n}\n//# sourceMappingURL=AsyncAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class Scheduler {\n constructor(schedulerActionCtor, now = Scheduler.now) {\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\nScheduler.now = dateTimestampProvider.now;\n//# sourceMappingURL=Scheduler.js.map","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, now);\n this.actions = [];\n this._active = false;\n this._scheduled = undefined;\n }\n flush(action) {\n const { actions } = this;\n if (this._active) {\n actions.push(action);\n return;\n }\n let error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { Observable } from '../Observable';\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) {\n const scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable((subscriber) => {\n let i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable((subscriber) => {\n let iterator;\n executeSchedule(subscriber, scheduler, () => {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, () => {\n let value;\n let done;\n try {\n ({ value, done } = iterator.next());\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return () => isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, () => {\n iterator.next().then((result) => {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of(...args) {\n const scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","import { createErrorClass } from './createErrorClass';\nexport const EmptyError = createErrorClass((_super) => function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n//# sourceMappingURL=EmptyError.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { map } from \"../operators/map\";\nconst { isArray } = Array;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn(...args) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(args => callOrApply(fn, args));\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n const buffer = [];\n let active = 0;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n const outerNext = (value) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n const doInnerSub = (value) => {\n expand && subscriber.next(value);\n active++;\n let innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, () => {\n innerComplete = true;\n }, undefined, () => {\n if (innerComplete) {\n try {\n active--;\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n }\n else {\n doInnerSub(bufferedValue);\n }\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => {\n isComplete = true;\n checkComplete();\n }));\n return () => {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent = Infinity) {\n if (isFunction(resultSelector)) {\n return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Infinity) {\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat(...args) {\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'];\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'];\nconst jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n const [add, remove] = isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler) => target[methodName](eventName, handler, options))\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget) => fromEvent(subTarget, eventName, options))(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable((subscriber) => {\n const handler = (...args) => subscriber.next(1 < args.length ? args : args[0]);\n add(handler);\n return () => remove(handler);\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return (methodName) => (handler) => target[methodName](eventName, handler);\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge(...args) {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value)));\n });\n}\n//# sourceMappingURL=filter.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate((source, subscriber) => {\n let innerSub = null;\n let syncUnsub = false;\n let handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n//# sourceMappingURL=catchError.js.map","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return (source, subscriber) => {\n let hasState = hasSeed;\n let state = seed;\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (() => {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n//# sourceMappingURL=scanInternals.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function debounce(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n const emit = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = createOperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n//# sourceMappingURL=debounce.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(() => value);\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return (source) => concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n return mergeMap((value, index) => delayDurationSelector(value, index).pipe(take(1), mapTo(value)));\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler = asyncScheduler) {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n//# sourceMappingURL=delay.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector = identity) {\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate((source, subscriber) => {\n let previousKey;\n let first = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n//# sourceMappingURL=first.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith(...values) {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate((source, subscriber) => {\n let innerSubscriber = null;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => {\n innerSubscriber = null;\n checkComplete();\n })));\n }, () => {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive = false) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=takeWhile.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n const tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error, complete }\n : observerOrNext;\n return tapObserver\n ? operate((source, subscriber) => {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n let isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, () => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, (err) => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, () => {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","@import 'variables';\n\n// -----\n\n$-shadow: 0 0 4px 1px rgba(16, 29, 48, 20%);\n$-shadow-transition: box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n\n// -----\n\n:host {\n overflow: hidden;\n position: relative;\n display: flex;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n// ----- Scroll shadows\n\n%shadow {\n position: absolute;\n transition: $-shadow-transition;\n}\n\n.shadow-top {\n @extend %shadow;\n z-index: 2;\n width: 100%;\n top: 0;\n}\n\n.shadow-left {\n @extend %shadow;\n z-index: 4;\n height: 100%;\n left: 0;\n}\n\n.shadow-right {\n @extend %shadow;\n z-index: 4;\n height: 100%;\n right: 0;\n}\n\n.shadow-bottom {\n @extend %shadow;\n z-index: 2;\n width: 100%;\n bottom: 0;\n}\n\n// ----- Component\n\n.scrollable-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n\n &.cat-scrollable-top .shadow-top,\n &.cat-scrollable-bottom .shadow-bottom,\n &.cat-scrollable-left .shadow-left,\n &.cat-scrollable-right .shadow-right {\n box-shadow: $-shadow;\n }\n}\n\n.scrollable-content {\n width: 100%;\n overflow: hidden;\n // white-space: nowrap;\n\n &.scroll-x {\n overflow-x: auto;\n }\n\n &.scroll-y {\n overflow-y: auto;\n }\n\n &.no-overscroll {\n overscroll-behavior: contain;\n }\n}\n","import { Component, Event, EventEmitter, h, Prop } from '@stencil/core';\nimport { fromEvent, merge, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\n\n/**\n * An element to display scrollable content.\n */\n@Component({\n tag: 'cat-scrollable',\n styleUrl: 'cat-scrollable.scss',\n shadow: true\n})\nexport class CatScrollable {\n scrollElement?: HTMLElement;\n scrollWrapperElement?: HTMLElement;\n private readonly init = new Subject<void>();\n private readonly destroyed = new Subject<void>();\n private scrolled!: Observable<Event>;\n\n /** Flags to disable/enable scroll shadowX. */\n @Prop()\n noShadowX = false;\n\n /** Flags to disable/enable scroll shadowY. */\n @Prop()\n noShadowY = false;\n\n /** Flags to disable/enable overflowX. */\n @Prop()\n noOverflowX = false;\n\n /** Flags to disable/enable overflowY. */\n @Prop()\n noOverflowY = false;\n\n /** Flag to disable/enable overscroll behavior. */\n @Prop()\n noOverscroll = false;\n\n /**\n * Flag to not fire an initial event after content initialization.\n */\n @Prop() noScrolledInit = false;\n\n /**\n * Buffer to be used to calculate the scroll distance.\n */\n @Prop() scrolledBuffer = 0;\n\n /**\n * Emitted when the content is fully scrolled to the top.\n */\n @Event() scrolledTop!: EventEmitter<void>;\n\n /**\n * Emitted when the content is fully scrolled to the left.\n */\n @Event() scrolledLeft!: EventEmitter<void>;\n\n /**\n * Emitted when the content is fully scrolled to the right.\n */\n @Event() scrolledRight!: EventEmitter<void>;\n\n /**\n * Emitted when the content is fully scrolled to the bottom.\n */\n @Event() scrolledBottom!: EventEmitter<void>;\n\n componentDidRender() {\n if (this.scrollElement) {\n this.scrolled = fromEvent(this.scrollElement, 'scroll').pipe(takeUntil(this.destroyed));\n }\n this.attachEmitter('left', this.scrolledLeft, this.scrolledBuffer);\n this.attachEmitter('right', this.scrolledRight, this.scrolledBuffer);\n this.attachEmitter('bottom', this.scrolledBottom, this.scrolledBuffer);\n this.attachEmitter('top', this.scrolledTop, this.scrolledBuffer);\n merge(this.init, this.scrolled)\n .pipe(\n map(() => ({\n top: this.getScrollOffset('top') > 0,\n left: this.getScrollOffset('left') > 0,\n right: this.getScrollOffset('right') > 0,\n bottom: this.getScrollOffset('bottom') > 0\n })),\n distinctUntilChanged(),\n takeUntil(this.destroyed)\n )\n .subscribe(({ top, left, right, bottom }) => {\n this.toggleClass('cat-scrollable-top', top);\n this.toggleClass('cat-scrollable-left', left);\n this.toggleClass('cat-scrollable-right', right);\n this.toggleClass('cat-scrollable-bottom', bottom);\n });\n }\n\n componentDidLoad() {\n if (!this.noScrolledInit) {\n this.init.next();\n }\n }\n\n disconnectedCallback() {\n this.init.complete();\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n render() {\n return [\n <div class=\"scrollable-wrapper\" ref={el => (this.scrollWrapperElement = el)}>\n {!this.noShadowY && <div class=\"shadow-top\"></div>}\n {!this.noShadowX && <div class=\"shadow-left\"></div>}\n {!this.noShadowX && <div class=\"shadow-right\"></div>}\n {!this.noShadowY && <div class=\"shadow-bottom\"></div>}\n </div>,\n <div\n ref={el => (this.scrollElement = el)}\n class={{\n 'scrollable-content': true,\n 'scroll-x': !this.noOverflowX,\n 'scroll-y': !this.noOverflowY,\n 'no-overscroll': this.noOverscroll\n }}\n >\n <slot></slot>\n </div>\n ];\n }\n\n private attachEmitter(from: 'top' | 'left' | 'right' | 'bottom', emitter: EventEmitter<void>, buffer: number) {\n merge(this.init, this.scrolled)\n .pipe(map(() => this.getScrollOffset(from)))\n .pipe(map(offset => offset <= buffer))\n .pipe(distinctUntilChanged())\n .pipe(filter(isLower => isLower))\n .pipe(takeUntil(this.destroyed))\n .subscribe(() => emitter.emit());\n }\n\n private getScrollOffset(from: 'top' | 'left' | 'right' | 'bottom') {\n if (this.scrollElement) {\n switch (from) {\n case 'top':\n return this.scrollElement.scrollTop;\n case 'left':\n return this.scrollElement.scrollLeft;\n case 'right':\n return this.scrollElement.scrollWidth - this.scrollElement.clientWidth - this.scrollElement.scrollLeft;\n case 'bottom':\n return this.scrollElement.scrollHeight - this.scrollElement.clientHeight - this.scrollElement.scrollTop;\n default:\n return 0;\n }\n }\n return 0;\n }\n\n private toggleClass(name: string, value: boolean) {\n if (value) {\n this.scrollWrapperElement?.classList.add(name);\n } else {\n this.scrollWrapperElement?.classList.remove(name);\n }\n }\n}\n","var GHOST_ELEMENT_ID = '__autosizeInputGhost'\n\nvar characterEntities = {\n ' ': 'nbsp',\n '<': 'lt',\n '>': 'gt'\n}\nfunction mapSpecialCharacterToCharacterEntity (specialCharacter) {\n return '&' + characterEntities[specialCharacter] + ';'\n}\nfunction escapeSpecialCharacters (string) {\n return string.replace(/\\s|<|>/g, mapSpecialCharacterToCharacterEntity)\n}\n\n// Create `ghostElement`, with inline styles to hide it and ensure that the text is all\n// on a single line.\nfunction createGhostElement () {\n var ghostElement = document.createElement('div')\n ghostElement.id = GHOST_ELEMENT_ID\n ghostElement.style.cssText =\n 'display:inline-block;height:0;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:nowrap;'\n document.body.appendChild(ghostElement)\n return ghostElement\n}\n\nmodule.exports = function (element, options) {\n var elementStyle = window.getComputedStyle(element)\n // prettier-ignore\n var elementCssText = 'box-sizing:' + elementStyle.boxSizing +\n ';border-left:' + elementStyle.borderLeftWidth + ' solid red' +\n ';border-right:' + elementStyle.borderRightWidth + ' solid red' +\n ';font-family:' + elementStyle.fontFamily +\n ';font-feature-settings:' + elementStyle.fontFeatureSettings +\n ';font-kerning:' + elementStyle.fontKerning +\n ';font-size:' + elementStyle.fontSize +\n ';font-stretch:' + elementStyle.fontStretch +\n ';font-style:' + elementStyle.fontStyle +\n ';font-variant:' + elementStyle.fontVariant +\n ';font-variant-caps:' + elementStyle.fontVariantCaps +\n ';font-variant-ligatures:' + elementStyle.fontVariantLigatures +\n ';font-variant-numeric:' + elementStyle.fontVariantNumeric +\n ';font-weight:' + elementStyle.fontWeight +\n ';letter-spacing:' + elementStyle.letterSpacing +\n ';margin-left:' + elementStyle.marginLeft +\n ';margin-right:' + elementStyle.marginRight +\n ';padding-left:' + elementStyle.paddingLeft +\n ';padding-right:' + elementStyle.paddingRight +\n ';text-indent:' + elementStyle.textIndent +\n ';text-transform:' + elementStyle.textTransform\n\n // Assigns an appropriate width to the given `element` based on its contents.\n function setWidth () {\n var string = element.value || element.getAttribute('placeholder') || ''\n // Check if the `ghostElement` exists. If no, create it.\n var ghostElement =\n document.getElementById(GHOST_ELEMENT_ID) || createGhostElement()\n // Copy all width-affecting styles to the `ghostElement`.\n ghostElement.style.cssText += elementCssText\n ghostElement.innerHTML = escapeSpecialCharacters(string)\n // Copy the width of `ghostElement` to `element`.\n var width = window.getComputedStyle(ghostElement).width\n element.style.width = width\n return width\n }\n\n element.addEventListener('input', setWidth)\n\n var width = setWidth()\n\n // Set `min-width` only if `options.minWidth` was set, and only if the initial\n // width is non-zero.\n if (options && options.minWidth && width !== '0px') {\n element.style.minWidth = width\n }\n\n // Return a function for unbinding the event listener and removing the `ghostElement`.\n return function () {\n element.removeEventListener('input', setWidth)\n var ghostElement = document.getElementById(GHOST_ELEMENT_ID)\n if (ghostElement) {\n ghostElement.parentNode.removeChild(ghostElement)\n }\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n line-height: 1.25rem;\n position: relative;\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n align-self: flex-start;\n\n &.hidden {\n @include cat-visually-hidden;\n }\n}\n\n.input-optional {\n margin-left: 0.25rem;\n @include cat-body('xs');\n color: cat-token('color.ui.font.muted');\n}\n\n.select-wrapper {\n display: flex;\n align-items: flex-start;\n background: cat-token('color.ui.background.input');\n border-radius: cat-border-radius('m');\n box-shadow: 0 0 0 1px cat-token('color.ui.border.dark');\n transition: box-shadow cat-token('time.transition.s') linear;\n padding: 0.25rem;\n\n &:not(.select-disabled):hover {\n box-shadow: 0 0 0 2px cat-token('color.ui.border.dark');\n }\n\n &:not(.select-disabled):focus-within {\n outline: 2px solid cat-token('color.ui.border.focus');\n }\n}\n\n:host(.cat-error) {\n .select-wrapper {\n box-shadow: 0 0 0 1px cat-token('color.theme.danger.bg');\n\n &:not(.input-disabled):hover {\n box-shadow: 0 0 0 2px cat-token('color.theme.danger.bg');\n }\n }\n}\n\n.select-disabled {\n background: cat-token('color.ui.background.inputDisabled');\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n pointer-events: none;\n}\n\n.select-wrapper-inner {\n display: flex;\n flex: 1 1 auto;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.25rem;\n min-width: 0;\n\n > cat-avatar {\n padding-left: 0.25rem;\n }\n\n cat-avatar {\n --cat-avatar-size: 1.25rem;\n }\n}\n\n.select-input {\n font: inherit;\n background: none;\n border: none;\n outline: none;\n padding: 0.375rem 0.5rem;\n flex: 1 1 auto;\n @include cat-ellipsis;\n\n .select-disabled & {\n cursor: inherit;\n }\n}\n\n.select-pills {\n display: contents;\n}\n\n.pill {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 0.5rem;\n background: cat-token('color.ui.background.select.pill');\n border-radius: cat-border-radius('s');\n white-space: nowrap;\n min-width: 0;\n\n > span {\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1 1 0%;\n }\n\n > cat-button {\n margin-right: -0.25rem;\n margin-left: -0.25rem;\n }\n}\n\n.select-btn {\n transition: transform cat-token('time.transition.s') linear;\n\n &::part(button) {\n outline: none;\n }\n}\n\ncat-spinner {\n padding: 0.375rem;\n}\n\n.select-btn-open {\n transform: rotate(180deg);\n}\n\n.select-dropdown {\n position: absolute;\n right: 0;\n background: cat-token('color.ui.background.body');\n display: none;\n overflow: auto;\n // -webkit-overflow-scrolling: touch;\n @include cat-elevation(1);\n border-radius: cat-border-radius('m');\n z-index: $cat-dropdown-z-index;\n}\n\n.select-options-wrapper {\n max-height: 16rem;\n width: 100%;\n}\n\n.select-empty {\n margin: $cat-body-margin-bottom 0;\n padding: 0 1.25rem;\n}\n\n.select-options {\n list-style-type: none;\n margin: 0;\n padding: $cat-body-margin-bottom * 0.5 0;\n\n cat-checkbox,\n .select-option-single {\n margin: 0;\n padding: 0.5rem 1rem;\n }\n}\n\n.select-option-inner {\n display: flex;\n gap: 0.5rem;\n\n --cat-avatar-size: 1.25rem;\n}\n\n.select-option-text {\n flex: 1 1 0%;\n min-width: 0;\n}\n\n.select-option-single {\n cursor: pointer;\n}\n\n.select-input-transparent-caret {\n caret-color: transparent;\n}\n\n.select-option-empty,\n.select-option-loading {\n padding: 0.5rem 1rem;\n}\n\n.select-option:hover {\n background-color: cat-token('color.theme.secondary.bg', 0.05);\n}\n\n.select-option-active {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: -2px;\n}\n\n.select-option-label {\n @include cat-ellipsis(2);\n @include cat-break-word;\n}\n\n.select-option-description {\n @include cat-ellipsis(2);\n color: cat-token('color.ui.font.muted');\n}\n","import { autoUpdate, computePosition, offset, Placement } from '@floating-ui/dom';\nimport { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport autosizeInput from 'autosize-input';\nimport log from 'loglevel';\nimport {\n catchError,\n debounce,\n distinctUntilChanged,\n filter,\n first,\n Observable,\n of,\n scan,\n startWith,\n Subject,\n Subscription,\n switchMap,\n takeWhile,\n tap,\n timer\n} from 'rxjs';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\nexport interface Item {\n id: string;\n}\n\nexport interface Page<T> {\n content: T[];\n last: boolean;\n totalElements?: number;\n}\n\nexport interface RenderInfo {\n label: string;\n description?: string;\n avatar?: {\n src?: string;\n round?: boolean;\n };\n}\n\n/**\n * @property customId - Change the id of item for the given one.\n * @property resolve - Resolves the value of the select.\n * @property retrieve - Retrieves the options of the select.\n * @property render - Renders the items of the select.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface CatSelectConnector<T extends Item = any> {\n customId?: (item: T) => string;\n resolve: (ids: string[]) => Observable<T[]>;\n retrieve: (term: string, page: number) => Observable<Page<T>>;\n render: (item: T) => RenderInfo;\n}\n\nexport interface CatSelectState {\n term: string;\n isOpen: boolean;\n isLoading: boolean;\n isResolving: boolean;\n options: { item: Item; render: RenderInfo }[];\n selection: { item: Item; render: RenderInfo }[];\n activeOptionIndex: number;\n activeSelectionIndex: number;\n totalElements?: number;\n}\n\nexport interface CatSelectMultipleTaggingValue {\n ids: string[];\n tags: string[];\n}\n\nexport interface CatSelectTaggingValue {\n id: string;\n tag: string;\n}\n\nconst INIT_STATE: CatSelectState = {\n term: '',\n isOpen: false,\n isLoading: false,\n isResolving: false,\n options: [],\n selection: [],\n activeOptionIndex: -1,\n activeSelectionIndex: -1\n};\n\nlet nextUniqueId = 0;\n\n/**\n * Select lets user choose one option from an options' menu. Consider using\n * select when you have 6 or more options. Select component supports any content\n * type.\n *\n * @slot hint - Optional hint element to be displayed with the select.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n */\n@Component({\n tag: 'cat-select',\n styleUrl: 'cat-select.scss',\n shadow: true\n})\nexport class CatSelect {\n private static readonly SKELETON_COUNT = 4;\n private static readonly DROPDOWN_OFFSET = 4;\n private readonly id = `cat-input-${nextUniqueId++}`;\n\n private dropdown?: HTMLElement;\n private trigger?: HTMLElement;\n private input?: HTMLInputElement;\n\n private subscription?: Subscription;\n private term$: Subject<string> = new Subject();\n private more$: Subject<void> = new Subject();\n\n @Element() hostElement!: HTMLElement;\n\n @State() connector?: CatSelectConnector;\n\n @State() state: CatSelectState = INIT_STATE;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Enable multiple selection.\n */\n @Prop() multiple = false;\n\n /**\n * The debounce time for the search.\n */\n @Prop() debounce = 250;\n\n /**\n * The placement of the select.\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * The value of the select.\n *\n * The value of the select depends on whether it is allowed to choose a single item or several items.\n * When only one item can be selected, the value is the id of the item, in case several items can be selected, the value is an array of ids of the selected items.\n *\n * In case the user can add new items to the select (tags activated), the value in the single select is an object (CatSelectTaggingValue) with the id of the item or the name of the created item,\n * in the case of multiple select, it is an object (CatSelectMultipleTaggingValue) with the array of the ids of the items selected and the array of the names of the items created\n */\n @Prop({ mutable: true }) value?: string | string[] | CatSelectTaggingValue | CatSelectMultipleTaggingValue;\n\n /**\n * Whether the select is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * The placeholder text to display within the select.\n */\n @Prop() placeholder?: string;\n\n /**\n * Optional hint text(s) to be displayed with the select.\n */\n @Prop() hint?: string | string[];\n\n /**\n * The label for the select.\n */\n @Prop() label = '';\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A value is required or must be checked for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Whether the select should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the select should add new items.\n */\n @Prop() tags = false;\n\n /**\n * Optional hint text to be displayed on the new item to be added.\n */\n @Prop() tagHint?: string;\n\n @Watch('connector')\n onConnectorChange(connector: CatSelectConnector) {\n this.reset(connector);\n this.resolve();\n }\n\n @Watch('state')\n onStateChange(newState: CatSelectState, oldState: CatSelectState) {\n const changed = (key: keyof CatSelectState) => newState[key] !== oldState[key];\n if (changed('activeOptionIndex')) {\n if (this.state.activeOptionIndex >= 0) {\n const option = this.dropdown?.querySelector(`#select-${this.id}-option-${this.state.activeOptionIndex}`);\n option?.scrollIntoView({ block: 'nearest' });\n }\n }\n\n if (changed('selection')) {\n if (!this.multiple && this.state.selection.length) {\n this.hide();\n }\n const idsSelected = this.state.selection.map(item => item.item.id);\n if (!this.tags) {\n if (this.multiple) {\n this.value = idsSelected;\n } else {\n this.value = idsSelected.length ? idsSelected[0] : '';\n }\n } else {\n const ids = idsSelected.filter(id => !id.startsWith(`select-${this.id}-tag`));\n const tags = this.state.selection\n .filter(item => item.item.id.startsWith(`select-${this.id}-tag`))\n .map(item => item.render.label);\n if (this.multiple) {\n this.value = { ids, tags };\n } else {\n this.value = { id: ids.length ? ids[0] : '', tag: tags.length ? tags[0] : '' };\n }\n }\n this.catChange.emit();\n }\n }\n\n /**\n * Emitted when the select dropdown is opened.\n */\n @Event() catOpen!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the select dropdown is closed.\n */\n @Event() catClose!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the select loses the focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentDidLoad(): void {\n if (this.input) {\n autosizeInput(this.input);\n }\n if (this.trigger && this.dropdown) {\n autoUpdate(this.trigger, this.dropdown, () => this.update());\n }\n }\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on select', this);\n }\n }\n\n @Listen('blur')\n onBlur(event: FocusEvent): void {\n if (!this.multiple && this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n this.hide();\n this.patchState({ activeSelectionIndex: -1 });\n this.catBlur.emit(event);\n }\n\n @Listen('keydown')\n onKeyDown(event: KeyboardEvent): void {\n const isInputFocused = this.hostElement.shadowRoot?.activeElement === this.input;\n\n if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n this.onArrowKeyDown(event);\n } else if (['Enter', ' '].includes(event.key) && isInputFocused) {\n if (\n this.tags &&\n this.state.activeOptionIndex === 0 &&\n this.state.options[0].item.id === `select-${this.id}-option-tag`\n ) {\n event.preventDefault();\n if (this.multiple) {\n this.toggleTag(this.state.options[0]);\n } else {\n this.createTag(this.state.options[0].render.label);\n }\n } else if (this.state.activeOptionIndex >= 0) {\n event.preventDefault();\n if (this.multiple) {\n this.toggle(this.state.options[this.state.activeOptionIndex]);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n } else if (this.tags && event.key === 'Enter' && this.state.activeOptionIndex < 0) {\n this.createTag(this.state.term);\n }\n } else if (event.key === 'Escape') {\n this.hide();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n this.input?.focus();\n if (!this.multiple || !this.state.term || (this.input?.selectionStart === 0 && event.key === 'Backspace')) {\n if (this.state.activeSelectionIndex >= 0) {\n this.deselect(this.state.selection[this.state.activeSelectionIndex].item.id);\n } else if (this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({ selection: selectionClone });\n }\n }\n } else if (event.key === 'Tab') {\n this.trigger?.setAttribute('tabindex', '-1');\n if (this.multiple) {\n this.patchState({ activeSelectionIndex: -1, activeOptionIndex: -1 });\n } else if (this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n } else if (event.key.length === 1) {\n this.input?.focus();\n }\n }\n\n @Listen('keyup')\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Tab' && !event.shiftKey) {\n this.hostElement.shadowRoot?.activeElement === this.trigger && this.input?.focus();\n if (this.hostElement.shadowRoot?.activeElement === this.input) {\n this.show();\n }\n } else if (event.key === 'Tab' && event.shiftKey) {\n const clearButton = this.trigger?.querySelector(`#select-clear-btn-${this.id}`);\n\n if (clearButton) {\n this.hostElement.shadowRoot?.activeElement === clearButton && this.show();\n } else {\n this.show();\n }\n }\n }\n\n /**\n * Connect the functions of the select\n *\n * @param connector - The {@link CatSelectConnector} of the select.\n */\n @Method()\n async connect(connector: CatSelectConnector): Promise<void> {\n this.connector = connector;\n let number$: Observable<number>;\n this.subscription?.unsubscribe();\n this.subscription = this.term$\n .asObservable()\n .pipe(\n debounce(term => (term ? timer(this.debounce) : of(0))),\n distinctUntilChanged(),\n tap(\n () =>\n (number$ = this.more$.pipe(\n filter(() => !this.state.isLoading),\n scan(n => n + 1, 0),\n startWith(0)\n ))\n ),\n tap(() => this.patchState({ options: [] })),\n switchMap(term =>\n number$.pipe(\n tap(() => this.patchState({ isLoading: true })),\n switchMap(number => this.connectorSafe.retrieve(term, number)),\n tap(page => this.patchState({ isLoading: false, totalElements: page.totalElements })),\n takeWhile(page => !page.last, true),\n scan((items, page) => [...items, ...page.content], [] as Item[])\n )\n )\n )\n .subscribe(items => {\n const options = this.toSelectItems(items);\n\n if (\n this.tags &&\n this.state.term.trim().length &&\n !options.find(value1 => value1.render.label.toLowerCase() === this.state.term.toLowerCase())\n ) {\n let label;\n if (this.isTagSelected(this.state.term)) {\n label = this.state.selection.find(item => item.render.label.toLowerCase() === this.state.term.toLowerCase())\n ?.render.label;\n }\n options.unshift({\n item: { id: `select-${this.id}-option-tag` },\n render: { label: label ? label : this.state.term }\n });\n }\n this.patchState({\n options\n });\n });\n }\n\n render() {\n return (\n <Host>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={this.id} class={{ hidden: this.labelHidden }}>\n <span part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n {!this.required && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n </span>\n </label>\n )}\n <div\n class={{ 'select-wrapper': true, 'select-disabled': this.disabled }}\n ref={el => (this.trigger = el)}\n id={this.id}\n role=\"combobox\"\n aria-expanded={this.state.isOpen || this.isPillboxActive()}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-required={this.required}\n aria-activedescendant={this.activeDescendant}\n onClick={e => this.onClick(e)}\n >\n <div class=\"select-wrapper-inner\">\n {this.multiple && this.state.selection.length ? (\n <div id={`select-pillbox-${this.id}`} role=\"listbox\" aria-orientation=\"horizontal\" class=\"select-pills\">\n {this.state.selection.map((item, i) => (\n <span\n class={{\n pill: true,\n 'select-no-open': true,\n 'select-option-active': this.state.activeSelectionIndex === i\n }}\n role=\"option\"\n aria-selected=\"true\"\n id={`select-${this.id}-selection-${i}`}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span>{item.render.label}</span>\n {!this.disabled && (\n <cat-button\n size=\"xs\"\n variant=\"text\"\n icon=\"16-cross\"\n iconOnly\n a11yLabel={i18n.t('select.deselect')}\n onClick={() => this.deselect(item.item.id)}\n tabIndex={-1}\n ></cat-button>\n )}\n </span>\n ))}\n </div>\n ) : this.state.selection.length && this.state.selection[0].render.avatar ? (\n <cat-avatar\n label={this.state.selection[0].render.label}\n round={this.state.selection[0].render.avatar.round}\n src={this.state.selection[0].render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <input\n class=\"select-input\"\n ref={el => (this.input = el)}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-activedescendant={this.activeDescendant}\n onInput={() => this.onInput()}\n value={!this.multiple ? this.state.term : undefined}\n placeholder={this.placeholder}\n disabled={this.disabled || this.state.isResolving}\n ></input>\n </div>\n {this.state.isResolving && <cat-spinner></cat-spinner>}\n {(this.state.selection.length || this.state.term.length) &&\n !this.disabled &&\n !this.state.isResolving &&\n this.clearable ? (\n <cat-button\n id={`select-clear-btn-${this.id}`}\n iconOnly\n icon=\"cross-circle-outlined\"\n variant=\"text\"\n size=\"s\"\n a11yLabel={i18n.t('input.clear')}\n onClick={() => this.clear()}\n ></cat-button>\n ) : null}\n {!this.state.isResolving && (\n <cat-button\n iconOnly\n icon=\"chevron-down-outlined\"\n class={{ 'select-btn': true, 'select-btn-open': this.state.isOpen }}\n variant=\"text\"\n size=\"s\"\n a11yLabel={this.state.isOpen ? i18n.t('select.close') : i18n.t('select.open')}\n aria-controls={`select-listbox-${this.id}`}\n aria-expanded={this.state.isOpen}\n tabIndex={-1}\n disabled={this.disabled || this.state.isResolving}\n ></cat-button>\n )}\n </div>\n {this.hintSection}\n <div\n class=\"select-dropdown\"\n ref={el => (this.dropdown = el)}\n style={{ display: this.state.isOpen ? 'block' : undefined }}\n >\n {this.state.isOpen && (\n <cat-scrollable\n class=\"select-options-wrapper\"\n scrolledBuffer={56}\n noOverflowX\n noOverscroll\n noScrolledInit\n onScrolledBottom={() => this.more$.next()}\n >\n <ul\n class=\"select-options\"\n role=\"listbox\"\n aria-multiselectable={this.multiple}\n aria-setsize={this.state.totalElements}\n id={`select-listbox-${this.id}`}\n >\n {this.optionsList}\n {this.state.isLoading\n ? Array.from(Array(CatSelect.SKELETON_COUNT)).map(() => (\n <li class=\"select-option-loading\">\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n </li>\n ))\n : !this.state.options.length &&\n !this.tags && <li class=\"select-option-empty\">{i18n.t('select.empty')}</li>}\n </ul>\n </cat-scrollable>\n )}\n </div>\n </Host>\n );\n }\n\n private get optionsList() {\n return this.state.options.map((item, i) => {\n const isTagOption = this.tags && item.item.id === `select-${this.id}-option-tag`;\n\n const isOptionSelected = this.isSelected(item.item.id) || (this.tags && this.isTagSelected(item.render.label));\n\n const getLabel = () => {\n if (isTagOption) {\n return item.render.label + this.tagTextHelp;\n }\n return item.render.label;\n };\n\n return (\n <li\n role=\"option\"\n class=\"select-option\"\n id={`select-${this.id}-option-${i}`}\n aria-selected={isOptionSelected ? 'true' : 'false'}\n >\n {this.multiple ? (\n <cat-checkbox\n class={{ 'select-option-active': this.state.activeOptionIndex === i }}\n checked={isOptionSelected}\n tabIndex={-1}\n labelLeft\n onFocus={() => this.input?.focus()}\n onCatChange={e => {\n !isTagOption ? this.toggle(item) : this.toggleTag(item);\n e.stopPropagation();\n }}\n >\n <span slot=\"label\" class=\"select-option-inner\">\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </span>\n </cat-checkbox>\n ) : (\n <div\n class={{\n 'select-option-inner': true,\n 'select-option-single': true,\n 'select-option-active': this.state.activeOptionIndex === i\n }}\n onFocus={() => this.input?.focus()}\n onClick={() => (isTagOption ? this.createTag(item.render.label) : this.select(item))}\n tabIndex={-1}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </div>\n )}\n </li>\n );\n });\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private get connectorSafe(): CatSelectConnector {\n if (this.connector) {\n return this.connector;\n }\n throw new Error('CatSelectConnector not set');\n }\n\n private resolve() {\n this.patchState({ isResolving: true });\n\n const ids = this.initIds();\n let tags: string[];\n\n if (this.tags) {\n tags = this.initTags();\n }\n\n const data$ = ids.length ? this.connectorSafe.resolve(ids).pipe(first()) : of([]);\n data$.pipe(catchError(() => of([]))).subscribe(items => {\n const selection = items.length ? this.toSelectItems(items) : [];\n if (this.tags) {\n tags\n ?.filter(tag => !this.isTagSelected(tag, selection))\n .forEach((tag, index) => {\n const item = { id: `select-${this.id}-tag-${index}`, name: tag };\n selection.push({ item, render: { label: item.name } });\n });\n }\n this.patchState({\n isResolving: false,\n selection,\n term: !this.multiple && selection.length ? selection[0].render.label : ''\n });\n });\n }\n\n private toSelectItems(items: Item[]) {\n return items?.map(item => ({\n item: { ...item, id: this.connectorSafe.customId ? this.connectorSafe.customId(item) : item.id },\n render: this.connectorSafe.render(item)\n }));\n }\n\n private show() {\n if (!this.state.isOpen) {\n this.patchState({ isOpen: true });\n this.catOpen.emit();\n this.term$.next(this.state.term);\n this.input?.classList.remove('select-input-transparent-caret');\n }\n }\n\n private hide() {\n if (this.state.isOpen) {\n this.patchState({ isOpen: false, activeOptionIndex: -1 });\n this.catClose.emit();\n }\n }\n\n private search(term: string) {\n this.patchState({ term, activeOptionIndex: -1, activeSelectionIndex: -1 });\n this.term$.next(term);\n }\n\n private isSelected(id: string) {\n return this.state.selection.findIndex(s => s.item.id === id) >= 0;\n }\n\n private select(item: { item: Item; render: RenderInfo }) {\n if (!this.isSelected(item.item.id)) {\n let newSelection;\n if (this.multiple) {\n newSelection = [...this.state.selection, item];\n } else {\n newSelection = [item];\n this.search(item.render.label);\n }\n this.patchState({ selection: newSelection });\n\n if (this.multiple && this.state.term.trim() && this.input) {\n this.patchState({ term: '', activeOptionIndex: -1 });\n this.term$.next('');\n this.input.value = '';\n }\n }\n this.setTransparentCaret();\n }\n\n private deselect(id: string) {\n if (this.isSelected(id)) {\n this.patchState({\n selection: this.state.selection.filter(item => item.item.id !== id),\n activeSelectionIndex: -1\n });\n }\n }\n\n private toggle(item: { item: Item; render: RenderInfo }) {\n this.isSelected(item.item.id)\n ? this.deselect(item.item.id)\n : this.tags && this.isTagSelected(item.render.label)\n ? this.removeTag(item.render.label)\n : this.select(item);\n }\n\n private clear() {\n if (this.input && this.state.term) {\n this.patchState({ selection: [], options: [], term: '', activeOptionIndex: -1 });\n this.term$.next('');\n this.input.value = '';\n } else {\n this.patchState({ selection: [] });\n }\n }\n\n private reset(connector?: CatSelectConnector) {\n this.connector = connector ?? this.connector;\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n this.state = INIT_STATE;\n }\n\n private onClick(event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n const elem = event.target as Element;\n this.trigger?.setAttribute('tabindex', '0');\n this.input?.focus();\n if (\n elem === this.trigger ||\n elem === this.input ||\n elem.classList.contains('select-btn') ||\n elem.nodeName === 'SPAN'\n ) {\n this.state.isOpen ? this.hide() : this.show();\n }\n }\n\n private onInput() {\n this.search(this.input?.value.trim() || '');\n if (!this.multiple && this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({ selection: selectionClone });\n }\n this.show();\n }\n\n private update() {\n if (this.trigger && this.dropdown) {\n computePosition(this.trigger, this.dropdown, {\n placement: this.placement,\n middleware: [offset(CatSelect.DROPDOWN_OFFSET)]\n }).then(({ x, y }) => {\n if (this.dropdown) {\n Object.assign(this.dropdown.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private patchState(update: Partial<CatSelectState>) {\n this.state = { ...this.state, ...update };\n }\n\n private isPillboxActive() {\n return this.state.activeSelectionIndex >= 0;\n }\n\n private get activeDescendant() {\n let activeDescendant = undefined;\n if (this.state.activeOptionIndex >= 0) {\n activeDescendant = `select-${this.id}-option-${this.state.activeOptionIndex}`;\n } else if (this.state.activeSelectionIndex >= 0) {\n activeDescendant = `select-${this.id}-selection-${this.state.activeSelectionIndex}`;\n }\n return activeDescendant;\n }\n\n private onArrowKeyDown(event: KeyboardEvent) {\n let preventDefault = false;\n this.input?.focus();\n\n switch (event.key) {\n case 'ArrowDown':\n preventDefault = true;\n this.state.isOpen\n ? this.patchState({\n activeOptionIndex: Math.min(this.state.activeOptionIndex + 1, this.state.options.length - 1),\n activeSelectionIndex: -1\n })\n : this.show();\n break;\n case 'ArrowUp':\n preventDefault = true;\n this.state.activeOptionIndex >= 0\n ? this.patchState({\n activeOptionIndex: Math.max(this.state.activeOptionIndex - 1, -1),\n activeSelectionIndex: -1\n })\n : this.hide();\n break;\n case 'ArrowLeft':\n if (this.input?.selectionStart === 0) {\n preventDefault = true;\n let index;\n this.state.activeSelectionIndex > 0\n ? (index = Math.max(this.state.activeSelectionIndex - 1, -1))\n : (index = this.state.selection.length - 1);\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n break;\n case 'ArrowRight':\n if (this.state.activeSelectionIndex >= 0) {\n preventDefault = true;\n let index = -1;\n if (this.state.activeSelectionIndex < this.state.selection.length - 1) {\n index = Math.min(this.state.activeSelectionIndex + 1, this.state.selection.length - 1);\n } else if (!this.state.term) {\n index = 0;\n }\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n }\n\n if (preventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private get tagTextHelp() {\n return this.tagHint && !this.isTagSelected(this.state.term) ? ' (' + this.tagHint + ')' : '';\n }\n\n private isTagSelected(term: string, selection: { item: Item; render: RenderInfo }[] = this.state.selection) {\n return selection.findIndex(item => item.render.label.toLowerCase() === term.toLowerCase()) >= 0;\n }\n\n private createTag(term: string) {\n if (term.trim().length && !this.isTagSelected(term)) {\n const value = this.value as CatSelectMultipleTaggingValue;\n const tags = value?.tags;\n const tag = { id: `select-${this.id}-tag-${tags ? tags.length : 0}`, name: term };\n this.select({ item: tag, render: { label: tag.name } });\n }\n this.setTransparentCaret();\n }\n\n private removeTag(label: string) {\n if (this.isTagSelected(label)) {\n const item = this.state.selection.find(item => item.render.label.toLowerCase() === label.toLowerCase());\n item && this.deselect(item.item.id);\n }\n }\n\n private toggleTag(item: { item: Item; render: RenderInfo }) {\n this.isTagSelected(item.render.label) ? this.removeTag(item.render.label) : this.createTag(item.render.label);\n }\n\n private initIds() {\n let ids: string[] = [];\n if (this.value) {\n if (!this.tags) {\n if (this.multiple) {\n ids = this.value as string[];\n } else {\n ids = [this.value as string];\n }\n } else {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n ids = value.ids ? value.ids : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n ids = value.id ? [value.id] : [];\n }\n }\n }\n return ids;\n }\n\n private initTags() {\n let tags: string[] = [];\n if (this.value) {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n tags = value.tags ? value.tags : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n tags = value.tag ? [value.tag] : [];\n }\n }\n return tags;\n }\n\n private setTransparentCaret() {\n if (!this.multiple) {\n this.hide();\n this.input?.classList.add('select-input-transparent-caret');\n }\n }\n}\n","import { Component, h, Host } from '@stencil/core';\nimport { of, delay } from 'rxjs';\n\ninterface User {\n id: string;\n firstName: string;\n lastName: string;\n desc: string;\n}\n\ninterface Country {\n id: string;\n country: string;\n capital?: string;\n}\n@Component({\n tag: 'cat-select-demo',\n shadow: true\n})\nexport class CatSelectTest {\n private multipleSelect?: HTMLCatSelectElement;\n private multipleSelectAvatar?: HTMLCatSelectElement;\n private multipleSelectTagging?: HTMLCatSelectElement;\n private singleSelect?: HTMLCatSelectElement;\n private singleSelectAvatar?: HTMLCatSelectElement;\n private singleSelectTagging?: HTMLCatSelectElement;\n\n componentDidLoad(): void {\n this.multipleSelect?.connect({\n resolve: (ids: string[]) => {\n console.info(`Resolving data... (${ids.join(', ')})`);\n return of(\n ids.map(id => ({\n id,\n firstName: 'John',\n lastName: `Doe (${id})`,\n desc: 'resolved'\n }))\n ).pipe(delay(500));\n },\n retrieve: (term: string, page: number) => {\n console.info(`Retrieving data... (\"${term}\", ${page})`);\n return term === 'no'\n ? of({ last: true, content: [], totalElements: 0 })\n : of({\n last: false,\n totalElements: 10000,\n content: Array.from({ length: 10 }, (_, i) => ({\n id: '' + (i + page * 10),\n firstName: 'John',\n lastName: `Doe (${i + page * 10})`,\n desc: `\"${term}\": page ${page}`\n }))\n }).pipe(delay(500));\n },\n render: (user: User) => ({\n label: `${user.firstName} ${user.lastName}`,\n description: user.desc\n })\n });\n this.multipleSelectAvatar?.connect({\n resolve: (ids: string[]) => {\n console.info(`Resolving data... (${ids.join(', ')})`);\n return of(\n ids.map(id => ({\n id,\n firstName: 'John',\n lastName: `Doe (${id})`,\n desc: 'resolved'\n }))\n ).pipe(delay(500));\n },\n retrieve: (term: string, page: number) => {\n console.info(`Retrieving data... (\"${term}\", ${page})`);\n return term === 'no'\n ? of({ last: true, content: [], totalElements: 0 })\n : of({\n last: false,\n totalElements: 10000,\n content: Array.from({ length: 10 }, (_, i) => ({\n id: '' + (i + page * 10),\n firstName: 'John',\n lastName: `Doe (${i + page * 10})`,\n desc: `\"${term}\": page ${page}`\n }))\n }).pipe(delay(500));\n },\n render: (user: User) => ({\n label: `${user.firstName} ${user.lastName}`,\n description: user.desc,\n avatar: {\n src: `https://picsum.photos/id/${Math.floor(Math.random() * 100)}/200`,\n round: true\n }\n })\n });\n this.multipleSelectTagging?.connect(this.countryConnector);\n this.singleSelect?.connect({\n resolve: (ids: string[]) => {\n console.info(`Resolving data... (${ids.join(', ')})`);\n return of(\n ids.map(id => ({\n id,\n firstName: 'John',\n lastName: `Doe (${id})`,\n desc: 'resolved'\n }))\n ).pipe(delay(500));\n },\n retrieve: (term: string, page: number) => {\n console.info(`Retrieving data... (\"${term}\", ${page})`);\n return term === 'no'\n ? of({ last: true, content: [], totalElements: 0 })\n : of({\n last: false,\n totalElements: 10000,\n content: Array.from({ length: 10 }, (_, i) => ({\n id: '' + (i + page * 10),\n firstName: 'John',\n lastName: `Doe (${i + page * 10})`,\n desc: `\"${term}\": page ${page}`\n }))\n }).pipe(delay(500));\n },\n render: (user: User) => ({\n label: `${user.firstName} ${user.lastName}`,\n description: user.desc\n })\n });\n this.singleSelectAvatar?.connect({ ...this.countryConnector, customId: (item: Country) => item.country });\n this.singleSelectTagging?.connect(this.countryConnector);\n }\n\n render() {\n return (\n <Host style={{ display: 'flex', flexDirection: 'column' }}>\n <cat-select\n label=\"Multiple Select\"\n hint=\"This is a hint!\"\n ref={el => (this.multipleSelect = el)}\n value={['1']}\n placeholder=\"Hello World\"\n onCatChange={() => console.log(this.multipleSelect?.value)}\n onCatBlur={e => console.log('Multiple blur', e)}\n multiple\n clearable\n >\n <span slot=\"hint\">Searching for \"no\" -{'>'} no options are returned!</span>\n </cat-select>\n <cat-select\n label=\"Multiple with img\"\n ref={el => (this.multipleSelectAvatar = el)}\n value={['1']}\n placeholder=\"Hello World\"\n multiple\n clearable\n ></cat-select>\n <cat-select\n label=\"Multiple with tagging support\"\n hint=\"This is a hint!\"\n ref={el => (this.multipleSelectTagging = el)}\n value={{ ids: ['1'], tags: ['Test', 'Albania', 'Algeria'] }}\n placeholder=\"Select country\"\n onCatChange={() => console.log(this.multipleSelectTagging?.value)}\n multiple\n tags\n clearable\n ></cat-select>\n <cat-select\n label=\"Single Select\"\n hint=\"This is a hint!\"\n ref={el => (this.singleSelect = el)}\n placeholder=\"Search for a country or capital\"\n onCatBlur={e => console.log('Single blur', e)}\n clearable\n ></cat-select>\n <cat-select\n label=\"Single with img\"\n ref={el => (this.singleSelectAvatar = el)}\n value={'1'}\n onCatChange={() => console.log(this.singleSelectAvatar?.value)}\n placeholder=\"Search for a country or capital\"\n clearable\n ></cat-select>\n <cat-dropdown overflow noAutoClose>\n <cat-button slot=\"trigger\" style={{ width: '50%' }}>\n Open select\n </cat-button>\n <div slot=\"content\" style={{ width: '400px' }}>\n <cat-select\n label=\"Single with tagging support\"\n ref={el => (this.singleSelectTagging = el)}\n value={{ id: '', tag: 'Albania' }}\n placeholder=\"Search for a country or capital\"\n onCatChange={() => console.log('Single', this.singleSelectTagging?.value)}\n tagHint=\"new country\"\n tags\n clearable\n style={{ width: '90%' }}\n ></cat-select>\n </div>\n </cat-dropdown>\n </Host>\n );\n }\n\n private get countryConnector() {\n return {\n resolve: (ids: string[]) => {\n console.info(`Resolving data... (${ids.join(', ')})`);\n return of(ids.map(id => countries.find(value => value.id === id))).pipe(delay(500));\n },\n retrieve: (term: string, page: number) => {\n console.info(`Retrieving data... (\"${term}\", ${page})`);\n const filter = countries.filter(\n value =>\n value.country.toLowerCase().indexOf(term.toLowerCase()) === 0 ||\n value.capital?.toLowerCase().indexOf(term.toLowerCase()) === 0\n );\n const slice = filter.slice(page * 10, page * 10 + 10);\n return of({\n last: slice.length < 10,\n totalElements: filter.length,\n content: slice\n }).pipe(delay(500));\n },\n render: (country: Country) => ({\n label: country.country,\n description: country.capital || 'No capital',\n avatar: {\n src: `https://picsum.photos/id/${Math.floor(Math.random() * 100)}/200`,\n round: true\n }\n })\n };\n }\n}\n\nconst countries: Country[] = [\n {\n id: '0',\n country:\n 'Afghanistan Extra extra large extra large extra large extra large extra large extra large extra large extra large extra large extra large extra large extra large extra large extra large ',\n capital: 'Kabul'\n },\n {\n id: '1',\n country: 'Albania',\n capital: 'Tirana'\n },\n {\n id: '2',\n country: 'Algeria',\n capital: 'Alger'\n },\n {\n id: '3',\n country: 'American Samoa',\n capital: 'Fagatogo'\n },\n {\n id: '4',\n country: 'Andorra',\n capital: 'Andorra la Vella'\n },\n {\n id: '5',\n country: 'Angola',\n capital: 'Luanda'\n },\n {\n id: '6',\n country: 'Anguilla',\n capital: 'The Valley'\n },\n {\n id: '7',\n country: 'Antarctica'\n },\n {\n id: '8',\n country: 'Antigua and Barbuda',\n capital: \"Saint John's\"\n },\n {\n id: '9',\n country: 'Argentina',\n capital: 'Buenos Aires'\n },\n {\n id: '10',\n country: 'Armenia',\n capital: 'Yerevan'\n },\n {\n id: '11',\n country: 'Aruba',\n capital: 'Oranjestad'\n },\n {\n id: '12',\n country: 'Australia',\n capital: 'Canberra'\n },\n {\n id: '13',\n country: 'Austria',\n capital: 'Wien'\n },\n {\n id: '14',\n country: 'Azerbaijan',\n capital: 'Baku'\n },\n {\n id: '15',\n country: 'Bahamas',\n capital: 'Nassau'\n },\n {\n id: '16',\n country: 'Bahrain',\n capital: 'al-Manama'\n },\n {\n id: '17',\n country: 'Bangladesh',\n capital: 'Dhaka'\n },\n {\n id: '18',\n country: 'Barbados',\n capital: 'Bridgetown'\n },\n {\n id: '19',\n country: 'Belarus',\n capital: 'Minsk'\n },\n {\n id: '20',\n country: 'Belgium',\n capital: 'Bruxelles [Brussel]'\n },\n {\n id: '21',\n country: 'Belize',\n capital: 'Belmopan'\n },\n {\n id: '22',\n country: 'Benin',\n capital: 'Porto-Novo'\n },\n {\n id: '23',\n country: 'Bermuda',\n capital: 'Hamilton'\n },\n {\n id: '24',\n country: 'Bhutan',\n capital: 'Thimphu'\n },\n {\n id: '25',\n country: 'Bolivia',\n capital: 'La Paz'\n },\n {\n id: '26',\n country: 'Bosnia and Herzegovina',\n capital: 'Sarajevo'\n },\n {\n id: '27',\n country: 'Botswana',\n capital: 'Gaborone'\n },\n {\n id: '28',\n country: 'Bouvet Island'\n },\n {\n id: '29',\n country: 'Brazil',\n capital: 'Brasília'\n },\n {\n id: '30',\n country: 'British Indian Ocean Territory'\n },\n {\n id: '31',\n country: 'Brunei',\n capital: 'Bandar Seri Begawan'\n },\n {\n id: '32',\n country: 'Bulgaria',\n capital: 'Sofia'\n },\n {\n id: '33',\n country: 'Burkina Faso',\n capital: 'Ouagadougou'\n },\n {\n id: '34',\n country: 'Burundi',\n capital: 'Bujumbura'\n },\n {\n id: '35',\n country: 'Cambodia',\n capital: 'Phnom Penh'\n },\n {\n id: '36',\n country: 'Cameroon',\n capital: 'Yaound'\n },\n {\n id: '37',\n country: 'Canada',\n capital: 'Ottawa'\n },\n {\n id: '38',\n country: 'Cape Verde',\n capital: 'Praia'\n },\n {\n id: '39',\n country: 'Cayman Islands',\n capital: 'George Town'\n },\n {\n id: '40',\n country: 'Central African Republic',\n capital: 'Bangui'\n },\n {\n id: '41',\n country: 'Chad',\n capital: \"N'Djam\"\n },\n {\n id: '42',\n country: 'Chile',\n capital: 'Santiago de Chile'\n },\n {\n id: '43',\n country: 'China',\n capital: 'Peking'\n },\n {\n id: '44',\n country: 'Christmas Island',\n capital: 'Flying Fish Cove'\n },\n {\n id: '45',\n country: 'Cocos (Keeling) Islands',\n capital: 'West Island'\n },\n {\n id: '46',\n country: 'Colombia',\n capital: 'Santaf'\n },\n {\n id: '47',\n country: 'Comoros',\n capital: 'Moroni'\n },\n {\n id: '48',\n country: 'Congo',\n capital: 'Brazzaville'\n },\n {\n id: '49',\n country: 'Cook Islands',\n capital: 'Avarua'\n },\n {\n id: '50',\n country: 'Costa Rica',\n capital: 'San José'\n },\n {\n id: '51',\n country: 'Croatia',\n capital: 'Zagreb'\n },\n {\n id: '52',\n country: 'Cuba',\n capital: 'La Habana'\n },\n {\n id: '53',\n country: 'Cyprus',\n capital: 'Nicosia'\n },\n {\n id: '54',\n country: 'Czech Republic',\n capital: 'Praha'\n },\n {\n id: '55',\n country: 'Denmark',\n capital: 'Copenhagen'\n },\n {\n id: '56',\n country: 'Djibouti',\n capital: 'Djibouti'\n },\n {\n id: '57',\n country: 'Dominica',\n capital: 'Roseau'\n },\n {\n id: '58',\n country: 'Dominican Republic',\n capital: 'Santo Domingo de Guzm'\n },\n {\n id: '59',\n country: 'East Timor',\n capital: 'Dili'\n },\n {\n id: '60',\n country: 'Ecuador',\n capital: 'Quito'\n },\n {\n id: '61',\n country: 'Egypt',\n capital: 'Cairo'\n },\n {\n id: '62',\n country: 'El Salvador',\n capital: 'San Salvador'\n },\n {\n id: '63',\n country: 'England',\n capital: 'London'\n },\n {\n id: '64',\n country: 'Equatorial Guinea',\n capital: 'Malabo'\n },\n {\n id: '65',\n country: 'Eritrea',\n capital: 'Asmara'\n },\n {\n id: '66',\n country: 'Estonia',\n capital: 'Tallinn'\n },\n {\n id: '67',\n country: 'Ethiopia',\n capital: 'Addis Abeba'\n },\n {\n id: '68',\n country: 'Falkland Islands',\n capital: 'Stanley'\n },\n {\n id: '69',\n country: 'Faroe Islands',\n capital: 'Tórshavn'\n },\n {\n id: '70',\n country: 'Fiji Islands',\n capital: 'Suva'\n },\n {\n id: '71',\n country: 'Finland',\n capital: 'Helsinki [Helsingfors]'\n },\n {\n id: '72',\n country: 'France',\n capital: 'Paris'\n },\n {\n id: '73',\n country: 'French Guiana',\n capital: 'Cayenne'\n },\n {\n id: '74',\n country: 'French Polynesia',\n capital: 'Papeete'\n },\n {\n id: '75',\n country: 'French Southern territories'\n },\n {\n id: '76',\n country: 'Gabon',\n capital: 'Libreville'\n },\n {\n id: '77',\n country: 'Gambia',\n capital: 'Banjul'\n },\n {\n id: '78',\n country: 'Georgia',\n capital: 'Tbilisi'\n },\n {\n id: '79',\n country: 'Germany',\n capital: 'Berlin'\n },\n {\n id: '80',\n country: 'Ghana',\n capital: 'Accra'\n },\n {\n id: '81',\n country: 'Gibraltar',\n capital: 'Gibraltar'\n },\n {\n id: '82',\n country: 'Greece',\n capital: 'Athenai'\n },\n {\n id: '83',\n country: 'Greenland',\n capital: 'Nuuk'\n },\n {\n id: '84',\n country: 'Grenada',\n capital: \"Saint George's\"\n },\n {\n id: '85',\n country: 'Guadeloupe',\n capital: 'Basse-Terre'\n },\n {\n id: '86',\n country: 'Guam',\n capital: 'Aga'\n },\n {\n id: '87',\n country: 'Guatemala',\n capital: 'Ciudad de Guatemala'\n },\n {\n id: '88',\n country: 'Guinea',\n capital: 'Conakry'\n },\n {\n id: '89',\n country: 'Guinea-Bissau',\n capital: 'Bissau'\n },\n {\n id: '90',\n country: 'Guyana',\n capital: 'Georgetown'\n },\n {\n id: '91',\n country: 'Haiti',\n capital: 'Port-au-Prince'\n },\n {\n id: '92',\n country: 'Heard Island and McDonald Islands'\n },\n {\n id: '93',\n country: 'Holy See (Vatican City State)',\n capital: 'Citt'\n },\n {\n id: '94',\n country: 'Honduras',\n capital: 'Tegucigalpa'\n },\n {\n id: '95',\n country: 'Hong Kong',\n capital: 'Victoria'\n },\n {\n id: '96',\n country: 'Hungary',\n capital: 'Budapest'\n },\n {\n id: '97',\n country: 'Iceland',\n capital: 'Reykjavík'\n },\n {\n id: '98',\n country: 'India',\n capital: 'New Delhi'\n },\n {\n id: '99',\n country: 'Indonesia',\n capital: 'Jakarta'\n },\n {\n id: '100',\n country: 'Iran',\n capital: 'Tehran'\n },\n {\n id: '101',\n country: 'Iraq',\n capital: 'Baghdad'\n },\n {\n id: '102',\n country: 'Ireland',\n capital: 'Dublin'\n },\n {\n id: '103',\n country: 'Israel',\n capital: 'Jerusalem'\n },\n {\n id: '104',\n country: 'Italy',\n capital: 'Roma'\n },\n {\n id: '105',\n country: 'Ivory Coast',\n capital: 'Yamoussoukro'\n },\n {\n id: '106',\n country: 'Jamaica',\n capital: 'Kingston'\n },\n {\n id: '107',\n country: 'Japan',\n capital: 'Tokyo'\n },\n {\n id: '108',\n country: 'Jordan',\n capital: 'Amman'\n },\n {\n id: '109',\n country: 'Kazakhstan',\n capital: 'Astana'\n },\n {\n id: '110',\n country: 'Kenya',\n capital: 'Nairobi'\n },\n {\n id: '111',\n country: 'Kiribati',\n capital: 'Bairiki'\n },\n {\n id: '112',\n country: 'Kuwait',\n capital: 'Kuwait'\n },\n {\n id: '113',\n country: 'Kyrgyzstan',\n capital: 'Bishkek'\n },\n {\n id: '114',\n country: 'Laos',\n capital: 'Vientiane'\n },\n {\n id: '115',\n country: 'Latvia',\n capital: 'Riga'\n },\n {\n id: '116',\n country: 'Lebanon',\n capital: 'Beirut'\n },\n {\n id: '117',\n country: 'Lesotho',\n capital: 'Maseru'\n },\n {\n id: '118',\n country: 'Liberia',\n capital: 'Monrovia'\n },\n {\n id: '119',\n country: 'Libyan Arab Jamahiriya',\n capital: 'Tripoli'\n },\n {\n id: '120',\n country: 'Liechtenstein',\n capital: 'Vaduz'\n },\n {\n id: '121',\n country: 'Lithuania',\n capital: 'Vilnius'\n },\n {\n id: '122',\n country: 'Luxembourg',\n capital: 'Luxembourg [Luxemburg/L'\n },\n {\n id: '123',\n country: 'Macao',\n capital: 'Macao'\n },\n {\n id: '124',\n country: 'North Macedonia',\n capital: 'Skopje'\n },\n {\n id: '125',\n country: 'Madagascar',\n capital: 'Antananarivo'\n },\n {\n id: '126',\n country: 'Malawi',\n capital: 'Lilongwe'\n },\n {\n id: '127',\n country: 'Malaysia',\n capital: 'Kuala Lumpur'\n },\n {\n id: '128',\n country: 'Maldives',\n capital: 'Male'\n },\n {\n id: '129',\n country: 'Mali',\n capital: 'Bamako'\n },\n {\n id: '130',\n country: 'Malta',\n capital: 'Valletta'\n },\n {\n id: '131',\n country: 'Marshall Islands',\n capital: 'Dalap-Uliga-Darrit'\n },\n {\n id: '132',\n country: 'Martinique',\n capital: 'Fort-de-France'\n },\n {\n id: '133',\n country: 'Mauritania',\n capital: 'Nouakchott'\n },\n {\n id: '134',\n country: 'Mauritius',\n capital: 'Port-Louis'\n },\n {\n id: '135',\n country: 'Mayotte',\n capital: 'Mamoutzou'\n },\n {\n id: '136',\n country: 'Mexico',\n capital: 'Ciudad de M'\n },\n {\n id: '137',\n country: 'Micronesia, Federated States of',\n capital: 'Palikir'\n },\n {\n id: '138',\n country: 'Moldova',\n capital: 'Chisinau'\n },\n {\n id: '139',\n country: 'Monaco',\n capital: 'Monaco-Ville'\n },\n {\n id: '140',\n country: 'Mongolia',\n capital: 'Ulan Bator'\n },\n {\n id: '141',\n country: 'Montenegro',\n capital: 'Podgorica'\n },\n {\n id: '142',\n country: 'Montserrat',\n capital: 'Plymouth'\n },\n {\n id: '143',\n country: 'Morocco',\n capital: 'Rabat'\n },\n {\n id: '144',\n country: 'Mozambique',\n capital: 'Maputo'\n },\n {\n id: '145',\n country: 'Myanmar',\n capital: 'Rangoon (Yangon)'\n },\n {\n id: '146',\n country: 'Namibia',\n capital: 'Windhoek'\n },\n {\n id: '147',\n country: 'Nauru',\n capital: 'Yaren'\n },\n {\n id: '148',\n country: 'Nepal',\n capital: 'Kathmandu'\n },\n {\n id: '149',\n country: 'Netherlands',\n capital: 'Amsterdam'\n },\n {\n id: '150',\n country: 'Netherlands Antilles',\n capital: 'Willemstad'\n },\n {\n id: '151',\n country: 'New Caledonia',\n capital: 'Noum'\n },\n {\n id: '152',\n country: 'New Zealand',\n capital: 'Wellington'\n },\n {\n id: '153',\n country: 'Nicaragua',\n capital: 'Managua'\n },\n {\n id: '154',\n country: 'Niger',\n capital: 'Niamey'\n },\n {\n id: '155',\n country: 'Nigeria',\n capital: 'Abuja'\n },\n {\n id: '156',\n country: 'Niue',\n capital: 'Alofi'\n },\n {\n id: '157',\n country: 'Norfolk Island',\n capital: 'Kingston'\n },\n {\n id: '158',\n country: 'North Korea',\n capital: 'Pyongyang'\n },\n {\n id: '159',\n country: 'Northern Ireland',\n capital: 'Belfast'\n },\n {\n id: '160',\n country: 'Northern Mariana Islands',\n capital: 'Garapan'\n },\n {\n id: '161',\n country: 'Norway',\n capital: 'Oslo'\n },\n {\n id: '162',\n country: 'Oman',\n capital: 'Masqat'\n },\n {\n id: '163',\n country: 'Pakistan',\n capital: 'Islamabad'\n },\n {\n id: '164',\n country: 'Palau',\n capital: 'Koror'\n },\n {\n id: '165',\n country: 'Palestine',\n capital: 'Gaza'\n },\n {\n id: '166',\n country: 'Panama',\n capital: 'Ciudad de Panamá'\n },\n {\n id: '167',\n country: 'Papua New Guinea',\n capital: 'Port Moresby'\n },\n {\n id: '168',\n country: 'Paraguay',\n capital: 'Asunción'\n },\n {\n id: '169',\n country: 'Peru',\n capital: 'Lima'\n },\n {\n id: '170',\n country: 'Philippines',\n capital: 'Manila'\n },\n {\n id: '171',\n country: 'Pitcairn',\n capital: 'Adamstown'\n },\n {\n id: '172',\n country: 'Poland',\n capital: 'Warszawa'\n },\n {\n id: '173',\n country: 'Portugal',\n capital: 'Lisboa'\n },\n {\n id: '174',\n country: 'Puerto Rico',\n capital: 'San Juan'\n },\n {\n id: '175',\n country: 'Qatar',\n capital: 'Doha'\n },\n {\n id: '176',\n country: 'Reunion',\n capital: 'Saint-Denis'\n },\n {\n id: '177',\n country: 'Romania',\n capital: 'Bucuresti'\n },\n {\n id: '178',\n country: 'Russian Federation',\n capital: 'Moscow'\n },\n {\n id: '179',\n country: 'Rwanda',\n capital: 'Kigali'\n },\n {\n id: '180',\n country: 'Saint Helena',\n capital: 'Jamestown'\n },\n {\n id: '181',\n country: 'Saint Kitts and Nevis',\n capital: 'Basseterre'\n },\n {\n id: '182',\n country: 'Saint Lucia',\n capital: 'Castries'\n },\n {\n id: '183',\n country: 'Saint Pierre and Miquelon',\n capital: 'Saint-Pierre'\n },\n {\n id: '184',\n country: 'Saint Vincent and the Grenadines',\n capital: 'Kingstown'\n },\n {\n id: '185',\n country: 'Samoa',\n capital: 'Apia'\n },\n {\n id: '186',\n country: 'San Marino',\n capital: 'San Marino'\n },\n {\n id: '187',\n country: 'Sao Tome and Principe',\n capital: 'São Tomé'\n },\n {\n id: '188',\n country: 'Saudi Arabia',\n capital: 'Riyadh'\n },\n {\n id: '189',\n country: 'Scotland',\n capital: 'Edinburgh'\n },\n {\n id: '190',\n country: 'Senegal',\n capital: 'Dakar'\n },\n {\n id: '191',\n country: 'Serbia',\n capital: 'Belgrade'\n },\n {\n id: '192',\n country: 'Seychelles',\n capital: 'Victoria'\n },\n {\n id: '193',\n country: 'Sierra Leone',\n capital: 'Freetown'\n },\n {\n id: '194',\n country: 'Singapore',\n capital: 'Singapore'\n },\n {\n id: '195',\n country: 'Slovakia',\n capital: 'Bratislava'\n },\n {\n id: '196',\n country: 'Slovenia',\n capital: 'Ljubljana'\n },\n {\n id: '197',\n country: 'Solomon Islands',\n capital: 'Honiara'\n },\n {\n id: '198',\n country: 'Somalia',\n capital: 'Mogadishu'\n },\n {\n id: '199',\n country: 'South Africa',\n capital: 'Pretoria'\n },\n {\n id: '200',\n country: 'South Georgia and the South Sandwich Islands'\n },\n {\n id: '201',\n country: 'South Korea',\n capital: 'Seoul'\n },\n {\n id: '202',\n country: 'South Sudan',\n capital: 'Juba'\n },\n {\n id: '203',\n country: 'Spain',\n capital: 'Madrid'\n },\n {\n id: '204',\n country: 'Sri Lanka',\n capital: 'Colombo, Sri Jayawardenepura Kotte'\n },\n {\n id: '205',\n country: 'Sudan',\n capital: 'Khartum'\n },\n {\n id: '206',\n country: 'Suriname',\n capital: 'Paramaribo'\n },\n {\n id: '207',\n country: 'Svalbard and Jan Mayen',\n capital: 'Longyearbyen'\n },\n {\n id: '208',\n country: 'Swaziland',\n capital: 'Mbabane'\n },\n {\n id: '209',\n country: 'Sweden',\n capital: 'Stockholm'\n },\n {\n id: '210',\n country: 'Switzerland',\n capital: 'Bern'\n },\n {\n id: '211',\n country: 'Syria',\n capital: 'Damascus'\n },\n {\n id: '212',\n country: 'Tajikistan',\n capital: 'Dushanbe'\n },\n {\n id: '213',\n country: 'Tanzania',\n capital: 'Dodoma'\n },\n {\n id: '214',\n country: 'Thailand',\n capital: 'Bangkok'\n },\n {\n id: '215',\n country: 'The Democratic Republic of Congo',\n capital: 'Kinshasa'\n },\n {\n id: '216',\n country: 'Togo',\n capital: 'Lomé'\n },\n {\n id: '217',\n country: 'Tokelau',\n capital: 'Fakaofo'\n },\n {\n id: '218',\n country: 'Tonga',\n capital: \"Nuku'alofa\"\n },\n {\n id: '219',\n country: 'Trinidad and Tobago',\n capital: 'Port-of-Spain'\n },\n {\n id: '220',\n country: 'Tunisia',\n capital: 'Tunis'\n },\n {\n id: '221',\n country: 'Turkey',\n capital: 'Ankara'\n },\n {\n id: '222',\n country: 'Turkmenistan',\n capital: 'Ashgabat'\n },\n {\n id: '223',\n country: 'Turks and Caicos Islands',\n capital: 'Cockburn Town'\n },\n {\n id: '224',\n country: 'Tuvalu',\n capital: 'Funafuti'\n },\n {\n id: '225',\n country: 'Uganda',\n capital: 'Kampala'\n },\n {\n id: '226',\n country: 'Ukraine',\n capital: 'Kyiv'\n },\n {\n id: '227',\n country: 'United Arab Emirates',\n capital: 'Abu Dhabi'\n },\n {\n id: '228',\n country: 'United Kingdom',\n capital: 'London'\n },\n {\n id: '229',\n country: 'United States',\n capital: 'Washington'\n },\n {\n id: '230',\n country: 'United States Minor Outlying Islands'\n },\n {\n id: '231',\n country: 'Uruguay',\n capital: 'Montevideo'\n },\n {\n id: '232',\n country: 'Uzbekistan',\n capital: 'Toskent'\n },\n {\n id: '233',\n country: 'Vanuatu',\n capital: 'Port-Vila'\n },\n {\n id: '234',\n country: 'Venezuela',\n capital: 'Caracas'\n },\n {\n id: '235',\n country: 'Vietnam',\n capital: 'Hanoi'\n },\n {\n id: '236',\n country: 'Virgin Islands, British',\n capital: 'Road Town'\n },\n {\n id: '237',\n country: 'Virgin Islands, U.S.',\n capital: 'Charlotte Amalie'\n },\n {\n id: '238',\n country: 'Wales',\n capital: 'Cardiff'\n },\n {\n id: '239',\n country: 'Wallis and Futuna',\n capital: 'Mata-Utu'\n },\n {\n id: '240',\n country: 'Western Sahara',\n capital: 'El-Aai'\n },\n {\n id: '241',\n country: 'Yemen',\n capital: 'Sanaa'\n },\n {\n id: '242',\n country: 'Zambia',\n capital: 'Lusaka'\n },\n {\n id: '243',\n country: 'Zimbabwe',\n capital: 'Harare'\n }\n];\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n$skeleton-sizes: (\n 'xl': 3.5rem,\n 'l': 3rem,\n 'm': 2.5rem,\n 's': 2rem,\n 'xs': 1.5rem\n);\n\n:host {\n /**\n * @prop --background: The background color of the skeleton.\n * @prop --highlight: The highlight color of the skeleton.\n * @prop --speed: The animation speed.\n */\n display: flex;\n flex-direction: column;\n position: relative;\n\n --background: #{cat-token('color.ui.background.skeleton')};\n --highlight: #{cat-token('color.ui.background.skeletonHighlight')};\n --speed: 2s;\n}\n\n:host([variant='square']),\n:host([variant='circle']) {\n display: inline-flex;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host([variant='head']) {\n margin-bottom: $cat-head-margin-bottom;\n}\n\n:host([variant='body']) {\n margin-bottom: $cat-body-margin-bottom;\n}\n\n.skeleton {\n display: block;\n border-radius: cat-border-radius('m');\n background: var(--background);\n}\n\n.skeleton-circle {\n border-radius: 10rem;\n}\n\n// ----- size\n\n@mixin size($size, $lvl) {\n $-text-offset: 4px;\n .skeleton-#{$size} {\n &.skeleton-rectangle {\n width: var(--width, 100%);\n height: var(--height, map.get($skeleton-sizes, $size));\n }\n\n &.skeleton-square,\n &.skeleton-circle {\n width: var(--width, map.get($skeleton-sizes, $size));\n height: var(--height, map.get($skeleton-sizes, $size));\n }\n\n &.skeleton-head,\n &.skeleton-body {\n width: var(--width, var(--line-width, 100%));\n }\n\n &.skeleton-head {\n height: calc(#{cat-head-font-size($lvl)} - #{$-text-offset});\n margin: calc((#{cat-head-line-height($lvl)} - #{cat-head-font-size($lvl)} + #{$-text-offset}) * 0.5) 0;\n }\n\n &.skeleton-body {\n height: calc(#{cat-body-font-size($size)} - #{$-text-offset});\n margin: calc((#{cat-body-line-height($size)} - #{cat-body-font-size($size)} + #{$-text-offset}) * 0.5) 0;\n }\n }\n}\n\n@include size('xs', 5);\n@include size('s', 4);\n@include size('m', 3);\n@include size('l', 2);\n@include size('xl', 1);\n\n// ----- animation\n\n.skeleton-sheen {\n background: linear-gradient(90deg, var(--background) 33%, var(--highlight) 50%, var(--background) 66%)\n var(--background);\n background-size: 300% 100%;\n animation: sheen var(--speed) ease-in-out infinite;\n}\n\n.skeleton-pulse {\n position: relative;\n overflow: hidden;\n\n &::before {\n content: '';\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n background-color: var(--highlight);\n animation: var(--speed) ease-in-out 0.5s infinite normal none running pulse;\n opacity: 0;\n }\n}\n\n@keyframes sheen {\n 0% {\n background-position: right;\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: 1;\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n/**\n * Skeletons are used to show where content will eventually be drawn.\n */\n@Component({\n tag: 'cat-skeleton',\n styleUrl: 'cat-skeleton.scss',\n shadow: true\n})\nexport class CatSkeleton {\n /**\n * The animation style of the skeleton.\n */\n @Prop() effect: 'plain' | 'sheen' | 'pulse' = 'sheen';\n\n /**\n * The rendering style of the skeleton.\n */\n @Prop() variant: 'rectangle' | 'square' | 'circle' | 'head' | 'body' = 'rectangle';\n\n /**\n * The size of the skeleton. If the variant is set to \"head\", the size values\n * \"xs\" to \"xl\" translate to the head levels `h1` to `h5`.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm';\n\n /**\n * The number of text lines to be rendered for \"head\" and \"body\" variants.\n * Defaults to 1 for \"head\" and 3 for \"body\". Will be ignored for other\n * variants.\n */\n @Prop() lines?: number;\n\n render() {\n return (\n <Host>\n {Array.from(Array(this.count)).map(() => (\n <div\n style={this.style}\n class={{\n skeleton: true,\n [`skeleton-${this.effect}`]: Boolean(this.effect),\n [`skeleton-${this.variant}`]: Boolean(this.variant),\n [`skeleton-${this.size}`]: Boolean(this.size)\n }}\n ></div>\n ))}\n </Host>\n );\n }\n\n private get count() {\n switch (this.variant) {\n case 'head':\n return Math.max(1, this.lines || 1);\n case 'body':\n return Math.max(1, this.lines || 3);\n default:\n return 1;\n }\n }\n\n private get style() {\n return this.variant === 'head' || this.variant === 'body'\n ? {\n '--line-width': `${this.random(50, 100)}%`\n }\n : undefined;\n }\n\n private random(min: number, max: number) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'sass:map';\n\n$spinner-sizes: (\n 'xl': 1.75rem,\n 'l': 1.5rem,\n 'm': 1.25rem,\n 's': 1rem,\n 'xs': 0.75rem\n);\n\n:host {\n display: inline-flex;\n vertical-align: middle;\n @include cat-select(none);\n\n &[hidden] {\n display: none;\n }\n}\n\nspan {\n display: inline-flex;\n}\n\nsvg {\n fill: none;\n stroke: currentColor;\n stroke-dasharray: 135px;\n stroke-dashoffset: 95px;\n stroke-linecap: round;\n stroke-width: 5px;\n transform-origin: center center;\n animation: spin 0.75s cubic-bezier(0.4, 0.15, 0.6, 0.85) infinite;\n width: 1em;\n height: 1em;\n}\n\n// ----- sizes\n\n@mixin size($size) {\n .spinner-#{$size} svg {\n font-size: map.get($spinner-sizes, $size);\n }\n}\n\n@include size('xs');\n@include size('s');\n@include size('m');\n@include size('l');\n@include size('xl');\n\n// ----- animation\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * Spinners are used to indicate users that their action is being processed.\n */\n@Component({\n tag: 'cat-spinner',\n styleUrl: 'cat-spinner.scss',\n shadow: true\n})\nexport class CatSpinner {\n /**\n * The size of the spinner.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' | 'inline' = 'm';\n\n /**\n * Adds accessible label for the spinner that is only shown for screen\n * readers. The `aria-hidden` attribute will be set if no label is present.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n render() {\n return (\n <span\n aria-label={this.a11yLabel}\n aria-hidden={this.a11yLabel ? null : 'true'}\n class={{\n [`spinner-${this.size}`]: this.size !== 'inline'\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\">\n <circle cx=\"24\" cy=\"24\" r=\"21.5\"></circle>\n </svg>\n </span>\n );\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n display: block;\n}\n\n:host([hidden]) {\n display: none;\n}\n","import { Component, h, Prop, Event, EventEmitter, Listen, Host, Element } from '@stencil/core';\nimport { Breakpoint } from '../../utils/breakpoints';\n\nlet nextUniqueId = 0;\n\n/**\n * A single tab inside a tabs component.\n */\n@Component({\n tag: 'cat-tab',\n styleUrl: 'cat-tab.scss',\n shadow: true\n})\nexport class CatTab {\n @Element() hostElement!: HTMLElement;\n\n /**\n * The label of the tab.\n */\n @Prop({ reflect: true }) label = '';\n\n /**\n * The name of an icon to be displayed in the tab.\n */\n @Prop({ reflect: true }) icon?: string;\n\n /**\n * Hide the actual button content and only display the tab.\n */\n @Prop({ reflect: true }) iconOnly: boolean | Breakpoint = false;\n\n /**\n * Display the icon on the right.\n */\n @Prop({ reflect: true }) iconRight = false;\n\n /**\n * A destination to link to, rendered in the href attribute of a link.\n */\n @Prop({ reflect: true }) url?: string;\n\n /**\n * Specifies where to open the linked document.\n */\n @Prop({ reflect: true }) urlTarget?: '_blank' | '_self';\n\n /**\n * Specifies that the tab should be deactivated.\n */\n @Prop({ reflect: true }) deactivated = false;\n\n /**\n * Emitted when tab is clicked.\n */\n @Event() tabClick!: EventEmitter<MouseEvent>;\n\n connectedCallback() {\n if (!this.hostElement.id) {\n this.hostElement.id = `cat-tab-${nextUniqueId++}`;\n }\n }\n\n @Listen('click')\n onClick(event: MouseEvent) {\n this.tabClick.emit(event);\n }\n\n render() {\n return <Host></Host>;\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n display: flex;\n flex-direction: row;\n box-shadow: inset 0 -1px 0 0 cat-token('color.ui.border.dark');\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host([tabs-align='center']) {\n justify-content: center;\n}\n\n:host([tabs-align='right']) {\n justify-content: end;\n}\n\n:host([tabs-align='justify']) {\n cat-button {\n flex: 1 0 auto;\n }\n}\n\n.cat-tab {\n padding: 0.5rem 0;\n\n &.cat-tab-active {\n box-shadow: inset 0 -3px 0 0 cat-token('color.theme.primary.bg');\n }\n}\n","import { Component, h, Element, State, Watch, Listen, Host, Prop } from '@stencil/core';\n\n/**\n * Tabs are used to display multiple panels to be contained within a single\n * window, using tabs as a navigational element.\n *\n * @part tab - The header of the tab.\n */\n@Component({\n tag: 'cat-tabs',\n styleUrl: 'cat-tabs.scss',\n shadow: true\n})\nexport class CatTabs {\n private buttons: HTMLCatButtonElement[] = [];\n private mutationObserver?: MutationObserver;\n\n @Element() hostElement!: HTMLElement;\n\n @State() tabs: HTMLCatTabElement[] = [];\n\n @State() activeTabId?: string;\n\n /**\n * The ID of the active tab.\n */\n @Prop() activeTab = '';\n\n /**\n * The alignment of the tabs.\n */\n @Prop() tabsAlign: 'left' | 'center' | 'right' | 'justify' = 'left';\n\n @Watch('activeTabId')\n onActiveTabChanged(newActiveTab: string): void {\n const activeTab = this.tabs.find(value => value.id === newActiveTab);\n activeTab?.click();\n }\n\n componentWillLoad(): void {\n this.syncTabs();\n if (this.tabs.length) {\n this.activeTabId = this.activeTab;\n }\n }\n\n componentDidLoad() {\n this.mutationObserver = new MutationObserver(\n mutations => mutations.some(value => value.target.nodeName === 'CAT-TAB') && this.syncTabs()\n );\n\n this.mutationObserver?.observe(this.hostElement, {\n childList: true,\n attributes: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n }\n\n @Listen('keydown')\n onKeydown(event: KeyboardEvent): void {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(event.key)) {\n const targetElements = this.buttons.filter(button => !button.disabled);\n const activeElement = this.hostElement.shadowRoot?.activeElement as HTMLCatButtonElement;\n const activeIdx = activeElement ? targetElements.indexOf(activeElement) : -1;\n const activeOff = ['ArrowDown', 'ArrowRight'].includes(event.key) ? 1 : -1;\n const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;\n targetElements[targetIdx].doFocus();\n event.preventDefault();\n }\n }\n\n render() {\n return (\n <Host>\n {this.tabs.map((tab: HTMLCatTabElement) => {\n return (\n <cat-button\n ref={el => el && this.updateButtonsRef(el)}\n buttonId={tab.id}\n role=\"tab\"\n part=\"tab\"\n class={{\n 'cat-tab': true,\n 'cat-tab-active': Boolean(this.activeTabId && tab.id === this.activeTabId)\n }}\n active={Boolean(this.activeTabId && tab.id === this.activeTabId)}\n color={this.activeTabId && tab.id === this.activeTabId ? 'primary' : 'secondary'}\n variant=\"text\"\n icon={tab.icon}\n iconOnly={tab.iconOnly}\n iconRight={tab.iconRight}\n url={tab.url}\n disabled={tab.deactivated}\n urlTarget={tab.urlTarget}\n onCatClick={() => (this.activeTabId = tab.id)}\n >\n {tab.label}\n </cat-button>\n );\n })}\n </Host>\n );\n }\n\n private updateButtonsRef(button: HTMLCatButtonElement) {\n const indexOf = this.buttons.indexOf(button);\n\n if (indexOf >= 0) {\n this.buttons[indexOf] = button;\n } else {\n this.buttons.push(button);\n }\n }\n\n private syncTabs() {\n this.tabs = Array.from(this.hostElement.querySelectorAll('cat-tab'));\n }\n}\n","var e,t,n=\"function\"==typeof Map?new Map:(e=[],t=[],{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,o){-1===e.indexOf(n)&&(e.push(n),t.push(o))},delete:function(n){var o=e.indexOf(n);o>-1&&(e.splice(o,1),t.splice(o,1))}}),o=function(e){return new Event(e,{bubbles:!0})};try{new Event(\"test\")}catch(e){o=function(e){var t=document.createEvent(\"Event\");return t.initEvent(e,!0,!1),t}}function r(e){var t=n.get(e);t&&t.destroy()}function i(e){var t=n.get(e);t&&t.update()}var l=null;\"undefined\"==typeof window||\"function\"!=typeof window.getComputedStyle?((l=function(e){return e}).destroy=function(e){return e},l.update=function(e){return e}):((l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return function(e){if(e&&e.nodeName&&\"TEXTAREA\"===e.nodeName&&!n.has(e)){var t,r=null,i=null,l=null,d=function(){e.clientWidth!==i&&c()},a=function(t){window.removeEventListener(\"resize\",d,!1),e.removeEventListener(\"input\",c,!1),e.removeEventListener(\"keyup\",c,!1),e.removeEventListener(\"autosize:destroy\",a,!1),e.removeEventListener(\"autosize:update\",c,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),n.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener(\"autosize:destroy\",a,!1),\"onpropertychange\"in e&&\"oninput\"in e&&e.addEventListener(\"keyup\",c,!1),window.addEventListener(\"resize\",d,!1),e.addEventListener(\"input\",c,!1),e.addEventListener(\"autosize:update\",c,!1),e.style.overflowX=\"hidden\",e.style.wordWrap=\"break-word\",n.set(e,{destroy:a,update:c}),\"vertical\"===(t=window.getComputedStyle(e,null)).resize?e.style.resize=\"none\":\"both\"===t.resize&&(e.style.resize=\"horizontal\"),r=\"content-box\"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(r)&&(r=0),c()}function u(t){var n=e.style.width;e.style.width=\"0px\",e.style.width=n,e.style.overflowY=t}function s(){if(0!==e.scrollHeight){var t=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}(e),n=document.documentElement&&document.documentElement.scrollTop;e.style.height=\"\",e.style.height=e.scrollHeight+r+\"px\",i=e.clientWidth,t.forEach(function(e){e.node.scrollTop=e.scrollTop}),n&&(document.documentElement.scrollTop=n)}}function c(){s();var t=Math.round(parseFloat(e.style.height)),n=window.getComputedStyle(e,null),r=\"content-box\"===n.boxSizing?Math.round(parseFloat(n.height)):e.offsetHeight;if(r<t?\"hidden\"===n.overflowY&&(u(\"scroll\"),s(),r=\"content-box\"===n.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight):\"hidden\"!==n.overflowY&&(u(\"hidden\"),s(),r=\"content-box\"===n.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight),l!==r){l=r;var i=o(\"autosize:resized\");try{e.dispatchEvent(i)}catch(e){}}}}(e)}),e}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e});var d=l;export default d;\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n @include cat-body('m');\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n align-self: flex-start;\n\n &.hidden {\n @include cat-visually-hidden;\n }\n}\n\n.input-optional {\n margin-left: 0.25rem;\n @include cat-body('xs');\n color: cat-token('color.ui.font.muted');\n}\n\ntextarea {\n margin: 0;\n padding: 0.625rem 0.75rem;\n min-height: 2.5rem;\n font: inherit;\n background: cat-token('color.ui.background.input');\n border-radius: cat-border-radius('m');\n border: none;\n box-shadow: 0 0 0 1px cat-token('color.ui.border.dark');\n transition: box-shadow cat-token('time.transition.s') linear;\n\n &:disabled {\n background: cat-token('color.ui.background.inputDisabled');\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n resize: none;\n }\n\n &:hover:not(:disabled) {\n box-shadow: 0 0 0 2px cat-token('color.ui.border.dark');\n }\n\n &:focus {\n outline: 2px solid cat-token('color.ui.border.focus');\n }\n\n &::placeholder {\n color: cat-token('color.ui.font.muted');\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport autosize from 'autosize';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\n\nlet nextUniqueId = 0;\n\n/**\n * Textarea specifies a control that allows user to write text over multiple\n * rows. Used when the expected user input is long. For shorter input, use the\n * input component.\n *\n * @slot hint - Optional hint element to be displayed with the textarea.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n */\n@Component({\n tag: 'cat-textarea',\n styleUrl: 'cat-textarea.scss',\n shadow: true\n})\nexport class CatTextarea {\n private readonly id = `cat-textarea-${nextUniqueId++}`;\n private textarea!: HTMLTextAreaElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Whether the textarea is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Optional hint text(s) to be displayed with the textarea.\n */\n @Prop() hint?: string | string[];\n\n /**\n * The label for the textarea.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A maximum length (number of characters) for textual values.\n */\n @Prop() maxLength?: number;\n\n /**\n * A minimum length (number of characters) for textual values.\n */\n @Prop() minLength?: number;\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name = '';\n\n /**\n * The placeholder text to display within the input.\n */\n @Prop() placeholder?: string;\n\n /**\n * The value is not editable.\n */\n @Prop() readonly = false;\n\n /**\n * A value is required or must be check for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Specifies the initial number of lines in the textarea.\n */\n @Prop() rows = 3;\n\n /**\n * The initial value of the control.\n */\n @Prop({ mutable: true }) value?: string | number;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the textarea received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the textarea loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on textarea', this);\n }\n }\n\n componentDidLoad(): void {\n autosize(this.textarea);\n }\n\n /**\n * Programmatically move focus to the textarea. Use this method instead of\n * `textarea.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.textarea.focus(options);\n }\n\n /**\n * Programmatically remove focus from the textarea. Use this method instead of\n * `textarea.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.textarea.blur();\n }\n\n /**\n * Programmatically simulate a click on the textarea.\n */\n @Method()\n async doClick(): Promise<void> {\n this.textarea.click();\n }\n\n render() {\n return (\n <Host>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={this.id} class={{ hidden: this.labelHidden }}>\n <span part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n {!this.required && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n (Optional)\n </span>\n )}\n </span>\n </label>\n )}\n <textarea\n ref={el => (this.textarea = el as HTMLTextAreaElement)}\n id={this.id}\n disabled={this.disabled}\n maxlength={this.maxLength}\n minlength={this.minLength}\n name={this.name}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n rows={this.rows}\n value={this.value}\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n ></textarea>\n {this.hintSection}\n </Host>\n );\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private onInput(event: Event) {\n this.value = this.textarea.value;\n this.catChange.emit(event);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n\n$toggle-width: 2rem;\n$toggle-height: 1.25rem;\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-bottom: $cat-body-margin-bottom;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n flex: 0 1 auto;\n display: flex;\n gap: 0.5rem;\n @include cat-body('m');\n @include cat-select(none);\n cursor: pointer;\n}\n\n.label-left {\n flex-direction: row-reverse;\n}\n\ninput {\n position: absolute;\n margin: 0;\n width: $toggle-width;\n height: $toggle-height;\n opacity: 0;\n cursor: inherit;\n}\n\n.toggle {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: $toggle-width;\n height: $toggle-height;\n border-radius: 10rem;\n background-color: cat-token('color.ui.border.dark');\n transition: background-color cat-token('time.transition.s') ease;\n pointer-events: none;\n\n :checked + & {\n background-color: cat-token('color.theme.primary.bg');\n }\n\n :focus-visible + & {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n\n &::after {\n content: '';\n position: absolute;\n width: 1rem;\n height: 1rem;\n background: #fff;\n border-radius: 10rem;\n transform: translateX(calc(2px - 0.5rem));\n transition: transform cat-token('time.transition.s') linear;\n @include cat-elevation(1);\n\n :checked + & {\n transform: translateX(calc(-2px + 0.5rem));\n background: cat-token('color.theme.primary.fill');\n }\n }\n\n .is-disabled & {\n background-color: cat-token('color.ui.border.dark');\n }\n}\n\n:host(.cat-error) {\n .toggle {\n background-color: cat-token('color.theme.danger.bg', 0.2);\n }\n\n :checked + .toggle {\n background-color: cat-token('color.theme.danger.bg');\n\n &::after {\n background: cat-token('color.theme.danger.fill');\n }\n }\n}\n\n.label {\n flex: 1 1 auto;\n\n .is-hidden & {\n @include cat-visually-hidden;\n }\n}\n\n.is-disabled {\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\n\nlet nextUniqueId = 0;\n\n/**\n * Toggles are graphical interface switches that give user control over a\n * feature or option that can be turned on or off.\n *\n * @slot hint - Optional hint element to be displayed with the toggle.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part toggle - The toggle element.\n * @part label - The label content.\n */\n@Component({\n tag: 'cat-toggle',\n styleUrls: ['cat-toggle.scss'],\n shadow: true\n})\nexport class CatToggle {\n private readonly id = `cat-toggle-${nextUniqueId++}`;\n private input!: HTMLInputElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Checked state of the toggle.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Disabled state of the toggle.\n */\n @Prop() disabled = false;\n\n /**\n * The label of the toggle that is visible.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * The name of the input\n */\n @Prop() name?: string;\n\n /**\n * Required state of the toggle.\n */\n @Prop() required = false;\n\n /**\n * The value of the toggle\n */\n @Prop({ mutable: true }) value?: string | boolean;\n\n /**\n * Optional hint text(s) to be displayed with the toggle.\n */\n @Prop() hint?: string | string[];\n\n /**\n * Whether the label should appear to the left of the toggle.\n */\n @Prop() labelLeft = false;\n\n /**\n * Emitted when the checked status of the toggle is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the toggle received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the toggle loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on toggle', this);\n }\n }\n\n /**\n * Programmatically move focus to the toggle. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the toggle. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n /**\n * Programmatically simulate a click on the toggle.\n */\n @Method()\n async doClick(): Promise<void> {\n this.input.click();\n }\n\n render() {\n return (\n <Host>\n <label\n htmlFor={this.id}\n class={{ 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }}\n >\n <input\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.id}\n type=\"checkbox\"\n name={this.name}\n value={this.value !== undefined ? String(this.value) : this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n class=\"form-check-input\"\n role=\"switch\"\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n />\n <span class=\"toggle\" part=\"toggle\"></span>\n <span class=\"label\" part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n </span>\n </label>\n {this.hintSection}\n </Host>\n );\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private onInput(event: Event) {\n this.checked = this.input.checked;\n\n if (!this.value || typeof this.value === 'boolean') {\n this.value = this.checked;\n }\n this.catChange.emit(event);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n","const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n\nexport default isTouchDevice;\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n$-max-width: 20rem;\n$-box-shadow: rgb(0 0 0 / 8%) 0 1px 8px 0;\n\n:host {\n display: contents;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.tooltip {\n position: absolute;\n @include cat-body('s', 500);\n background-color: cat-token('color.ui.background.tooltip');\n border-radius: cat-border-radius('m');\n color: cat-token('color.ui.font.tooltip');\n transition: opacity cat-token('time.transition.m') linear, visibility cat-token('time.transition.m') linear;\n visibility: hidden;\n opacity: 0;\n box-shadow: $-box-shadow;\n z-index: $cat-tooltip-z-index;\n max-width: $-max-width;\n\n &-hidden {\n @include cat-visually-hidden;\n }\n\n &-show {\n opacity: 1;\n visibility: visible;\n }\n}\n\n// ----- round\n\n.tooltip-round {\n border-radius: 10rem;\n}\n\n// ----- size\n\n.tooltip-s {\n padding: 0.375rem 0.5rem;\n\n &.tooltip-round {\n padding: 0.375rem 0.75rem;\n }\n}\n\n.tooltip-m {\n padding: 0.75rem;\n\n &.tooltip-round {\n padding: 0.75rem 1rem;\n }\n}\n\n.tooltip-l {\n padding: 1rem;\n\n &.tooltip-round {\n padding: 1rem 1.5rem;\n }\n}\n\n// ----- trigger\n\n.tooltip-trigger {\n display: inline-block;\n\n &:focus {\n outline: none;\n }\n}\n","import { Component, h, Host, Listen, Prop } from '@stencil/core';\nimport { autoUpdate, computePosition, flip, offset, Placement } from '@floating-ui/dom';\nimport isTouchScreen from '../../utils/is-touch-screen';\nimport firstTabbable from '../../utils/first-tabbable';\nimport { FocusableElement } from 'tabbable';\n\nlet nextUniqueId = 0;\n\n@Component({\n tag: 'cat-tooltip',\n styleUrl: 'cat-tooltip.scss',\n shadow: true\n})\nexport class CatTooltip {\n private static readonly OFFSET = 4;\n private readonly id = `cat-tooltip-${nextUniqueId++}`;\n private tooltip?: HTMLElement;\n private triggerElement?: HTMLElement;\n private trigger?: FocusableElement;\n private showTimeout?: number;\n private hideTimeout?: number;\n private touchTimeout?: number;\n private hidden = false;\n\n /**\n * The content of the tooltip.\n */\n @Prop() content = '';\n\n /**\n * Specifies that the tooltip should be disabled. A disabled tooltip is unusable,\n * and invisible. Corresponds with the native HTML disabled attribute.\n */\n @Prop() disabled = false;\n\n /**\n * The placement of the tooltip.\n */\n @Prop() placement: Placement = 'top';\n\n /**\n * Use round tooltip edges.\n */\n @Prop() round = false;\n\n /**\n * The size of the tooltip.\n */\n @Prop() size: 's' | 'm' | 'l' = 'm';\n\n /**\n * The delay time for showing tooltip in ms.\n */\n @Prop() showDelay = 250;\n\n /**\n * The delay time for hiding tooltip in ms.\n */\n @Prop() hideDelay = 0;\n\n /**\n * The duration of tap to show the tooltip.\n */\n @Prop() longTouchDuration = 1000;\n\n @Listen('keydown')\n handleKeyDown({ key }: KeyboardEvent) {\n key === 'Escape' && this.hideListener();\n }\n\n componentDidLoad(): void {\n this.trigger = firstTabbable(this.triggerElement) || this.triggerElement;\n if (!this.isTabbable) {\n this.trigger?.setAttribute('tabindex', '0');\n }\n\n if (this.trigger && this.tooltip) {\n autoUpdate(this.trigger, this.tooltip, () => this.update());\n }\n\n if (isTouchScreen) {\n window.addEventListener('touchstart', this.windowTouchStartListener.bind(this));\n this.trigger?.addEventListener('touchstart', this.touchStartListener.bind(this));\n this.trigger?.addEventListener('touchend', this.touchEndListener.bind(this));\n } else {\n this.trigger?.addEventListener('focusin', this.showListener.bind(this));\n this.trigger?.addEventListener('focusout', this.hideListener.bind(this));\n this.trigger?.addEventListener('mouseenter', this.showListener.bind(this));\n this.trigger?.addEventListener('mouseleave', this.hideListener.bind(this));\n }\n }\n\n componentWillRender(): void {\n this.hidden = !this.content || this.disabled;\n }\n\n disconnectedCallback(): void {\n if (isTouchScreen) {\n window.removeEventListener('touchstart', this.windowTouchStartListener.bind(this));\n this.trigger?.removeEventListener('touchstart', this.touchStartListener.bind(this));\n this.trigger?.removeEventListener('touchend', this.touchEndListener.bind(this));\n } else {\n this.trigger?.removeEventListener('mouseenter', this.showListener.bind(this));\n this.trigger?.removeEventListener('mouseleave', this.hideListener.bind(this));\n this.trigger?.removeEventListener('focusin', this.showListener.bind(this));\n this.trigger?.removeEventListener('focusout', this.hideListener.bind(this));\n }\n }\n\n render() {\n return (\n <Host>\n <div ref={el => (this.triggerElement = el)} aria-describedby={this.id} class=\"tooltip-trigger\">\n <slot />\n </div>\n <div\n ref={el => (this.tooltip = el)}\n id={this.id}\n aria-hidden={this.hidden}\n class={{\n tooltip: true,\n 'tooltip-hidden': this.hidden,\n 'tooltip-round': this.round,\n [`tooltip-${this.size}`]: Boolean(this.size)\n }}\n >\n {this.content}\n </div>\n </Host>\n );\n }\n\n private get isTabbable() {\n return firstTabbable(this.trigger);\n }\n\n private update() {\n if (this.trigger && this.tooltip) {\n computePosition(this.trigger, this.tooltip, {\n placement: this.placement,\n middleware: [offset(CatTooltip.OFFSET), flip()]\n }).then(({ x, y }) => {\n if (this.tooltip) {\n Object.assign(this.tooltip.style, {\n left: `${Math.max(0, x)}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private showListener() {\n window.clearTimeout(this.hideTimeout);\n this.showTimeout = window.setTimeout(() => {\n this.showTooltip();\n }, this.showDelay);\n }\n\n private hideListener() {\n window.clearTimeout(this.showTimeout);\n this.hideTimeout = window.setTimeout(() => {\n this.tooltip?.classList.remove('tooltip-show');\n }, this.hideDelay);\n }\n\n private touchStartListener(event: Event) {\n event.stopPropagation();\n this.touchTimeout = window.setTimeout(() => {\n this.showTooltip();\n }, this.longTouchDuration);\n }\n\n private touchEndListener() {\n if (this.touchTimeout) {\n window.clearTimeout(this.touchTimeout);\n }\n }\n\n private windowTouchStartListener() {\n this.tooltip?.classList.remove('tooltip-show');\n }\n\n private showTooltip() {\n !this.hidden && this.tooltip?.classList.add('tooltip-show');\n }\n}\n"]}