smoothly 1.1.1-alpha.21 → 1.1.1-alpha.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/smoothly-app_95.cjs.entry.js +2 -2
- package/dist/cjs/smoothly-app_95.cjs.entry.js.map +1 -1
- package/dist/collection/components/filter/style.css +6 -4
- package/dist/collection/components/item/style.css +2 -1
- package/dist/components/{p-88e2b22e.js → p-1a0b4fb3.js} +3 -3
- package/dist/components/{p-88e2b22e.js.map → p-1a0b4fb3.js.map} +1 -1
- package/dist/components/{p-e23bc122.js → p-20cd6af8.js} +2 -2
- package/dist/components/{p-e23bc122.js.map → p-20cd6af8.js.map} +1 -1
- package/dist/components/{p-e73096f5.js → p-4fd6a4d9.js} +4 -4
- package/dist/components/{p-e73096f5.js.map → p-4fd6a4d9.js.map} +1 -1
- package/dist/components/{p-229cf51b.js → p-501b8c14.js} +2 -2
- package/dist/components/{p-229cf51b.js.map → p-501b8c14.js.map} +1 -1
- package/dist/components/{p-b75ab804.js → p-66e44d01.js} +8 -8
- package/dist/components/{p-b75ab804.js.map → p-66e44d01.js.map} +1 -1
- package/dist/components/{p-64342f9c.js → p-6f87f1f2.js} +3 -3
- package/dist/components/{p-64342f9c.js.map → p-6f87f1f2.js.map} +1 -1
- package/dist/components/{p-c6e5608f.js → p-848583d1.js} +4 -4
- package/dist/components/{p-c6e5608f.js.map → p-848583d1.js.map} +1 -1
- package/dist/components/{p-fe55a54e.js → p-8f270448.js} +5 -5
- package/dist/components/{p-fe55a54e.js.map → p-8f270448.js.map} +1 -1
- package/dist/components/{p-9f010bc0.js → p-a0507866.js} +2 -2
- package/dist/components/p-a0507866.js.map +1 -0
- package/dist/components/{p-db26a36c.js → p-ace383da.js} +5 -5
- package/dist/components/{p-db26a36c.js.map → p-ace383da.js.map} +1 -1
- package/dist/components/{p-488297a3.js → p-b61b357d.js} +2 -2
- package/dist/components/p-b61b357d.js.map +1 -0
- package/dist/components/{p-1743a7e2.js → p-f6c78362.js} +3 -3
- package/dist/components/{p-1743a7e2.js.map → p-f6c78362.js.map} +1 -1
- package/dist/components/smoothly-app-demo.js +12 -12
- package/dist/components/smoothly-calendar.js +1 -1
- package/dist/components/smoothly-filter.js +1 -1
- package/dist/components/smoothly-input-date-range.js +1 -1
- package/dist/components/smoothly-input-date.js +1 -1
- package/dist/components/smoothly-input-demo-controlled-form.js +1 -1
- package/dist/components/smoothly-input-demo.js +1 -1
- package/dist/components/smoothly-input-month.js +1 -1
- package/dist/components/smoothly-input-select.js +1 -1
- package/dist/components/smoothly-item.js +1 -1
- package/dist/components/smoothly-table-demo-filtered.js +1 -1
- package/dist/components/smoothly-table-demo.js +1 -1
- package/dist/components/smoothly-theme-picker.js +1 -1
- package/dist/esm/smoothly-app_95.entry.js +2 -2
- package/dist/esm/smoothly-app_95.entry.js.map +1 -1
- package/dist/smoothly/p-68f169b6.entry.js +2 -0
- package/dist/smoothly/p-68f169b6.entry.js.map +1 -0
- package/dist/smoothly/smoothly.esm.js +1 -1
- package/package.json +1 -1
- package/dist/components/p-488297a3.js.map +0 -1
- package/dist/components/p-9f010bc0.js.map +0 -1
- package/dist/smoothly/p-84da94cd.entry.js +0 -2
- package/dist/smoothly/p-84da94cd.entry.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["IslyAny","Type","constructor","super","arguments","this","is","value","undefined","any","name","styleCss","SmoothlyAppStyle0","SmoothlyApp","rooms","componentDidRender","selected","window","location","search","_a","home","Object","values","find","room","element","disabled","setSelected","selectRoom","path","selectedChanged","forEach","content","getContent","mainElement","innerHTML","appendChild","burgerVisibilityHandler","event","burgerVisibility","detail","burgerStatusHandler","stopPropagation","menuOpen","locationChangeHandler","state","smoothlyPath","history","roomSelectedHandler","target","toString","URL","pathname","href","origin","pushState","roomLoadedHandler","replaceState","clickHandler","composedPath","some","e","burgerElement","navElement","render","h","key","color","label","ref","class","open","onSmoothlyNavStatus","onSmoothlyVisibleStatus","SmoothlyAppDemo","app","slot","type","toolTip","size","link","style","padding","maxWidth","fill","onClick","alert","icon","to","Part","prefix","suffix","modifier","hasCustomName","regexIdentifierStart","regexIdentifierPart","kFullWildcardRegex","isASCII","str","extended","test","lexer","lenient","tokens","i","length","char","ErrorOrInvalid","msg","TypeError","push","index","j","code","substr","count","pattern","error","parse","options","delimiter","prefixes","segmentWildcardRegex","escapeString","result","nameSet","Set","tryConsume","tryConsumeModifier","mustConsume","nextType","consumeText","result2","DefaultEncodePart","encodePart","pendingFixedValue","appendToPendingFixedValue","maybeAddPartFromPendingFixedValue","addPart","nameToken","regexOrWildcardToken","modifierToken","regexValue","has","add","charToken","indexOf","openToken","nameToken2","regexOrWildcardToken2","replace","flags","ignoreCase","stringToRegexp","names","partsToRegexp","modifierToString","parts","sensitive","strict","end","start","endsWith","part","RegExp","isEndDelimited","lastPart","DEFAULT_OPTIONS","HOSTNAME_OPTIONS","PATHNAME_OPTIONS","isAbsolutePathname","isPattern","maybeStripPrefix","startsWith","substring","maybeStripSuffix","treatAsIPv6Hostname","SPECIAL_SCHEMES","isSpecialScheme","protocol_regexp","scheme","canonicalizeHash","hash","url","canonicalizeSearch","canonicalizeHostname","hostname","ipv6HostnameEncodeCallback","hostnameEncodeCallback","canonicalizePassword","password","canonicalizeUsername","username","canonicalizePathname","protocol","includes","leadingSlash","canonicalizePort","port","defaultPortForProtocol","portEncodeCallback","canonicalizeProtocol","protocolEncodeCallback","input","toLowerCase","usernameEncodeCallback","passwordEncodeCallback","parseInt","standardURLPathnameEncodeCallback","pathURLPathnameEncodeCallback","searchEncodeCallback","hashEncodeCallback","Parser","tokenList","internalResult","tokenIndex","tokenIncrement","componentStart","groupDepth","hostnameIPv6BracketDepth","shouldTreatAsStandardURL","rewind","isHashPrefix","changeState","isSearchPrefix","rewindAndSetState","isGroupClose","isGroupOpen","isProtocolSuffix","computeShouldTreatAsStandardURL","nextState","skip","nextIsAuthoritySlashes","isIdentityTerminator","isPathnameStart","isPasswordPrefix","isIPv6Open","isIPv6Close","isPortPrefix","newState","makeComponentString","changeStateWithoutSettingComponent","safeToken","isNonSpecialPatternChar","token","previousToken","componentCharStart","assign","regexp","COMPONENTS","DEFAULT_PATTERN","extractValues","baseURL","o","processBaseURLString","escapePatternString","applyInit","init","slashIndex","lastIndexOf","escapeRegexpString","partsToPattern","kFullWildcardRegex2","regexIdentifierPart2","customName","needsGrouping","nextPart","URLPattern","baseURLOrOptions","component_pattern","parser","ignoreCaseOptions","defaults","component","options2","err","message","exec","inputs","match","groups","entries","compareComponent","left","right","comparePart","left2","right2","attr","emptyFixedPart","wildcardOnlyPart","comparePartList","Math","min","globalThis","SmoothlyAppRoomStyle0","SmoothlyAppRoom","componentWillLoad","smoothlyRoomLoaded","emit","contentElement","smoothlyRoomSelected","metaKey","ctrlKey","which","button","preventDefault","Host","SmoothlyBackToTopStyle0","SmoothlyBackToTop","addEventListener","visible","document","body","scrollTop","documentElement","cssVariables","opacity","bottom","scrollTo","top","behavior","SmoothlyBurgerStyle0","SmoothlyBurger","matchMedia","mediaQuery","matches","smoothlyNavStatus","smoothlyVisibleStatus","openChanged","resizeHandler","Button","children","local","redirect","convert","download","SmoothlyButtonStyle0","SmoothlyButton","SmoothlyButtonConfirmStyle0","SmoothlyButtonConfirm","clickTimeStamp","timeStamp","doubleClickTime","timer","clearTimeout","smoothlyConfirm","setTimeout","warning","expand","shape","SmoothlyButtonDemoStyle0","SmoothlyButtonDemo","checkmark","onSmoothlyToggleSwitchChange","console","log","month","date","d","Date","setDate","day","getDay","row","r","column","setUTCDate","isoly.Date","create","firstOfMonth","weekdays","getDate","toLocaleString","weekday","months","current","setMonth","years","getFullYear","setFullYear","year","SmoothlyCalendarStyle0","Calendar","clickCounter","now","onStart","next","smoothlyStartChange","onEnd","smoothlyEndChange","smoothlyValueChange","doubleInput","frozenDate","smoothlyDateSet","smoothlyDateRangeSet","onHover","previous","onSmoothlyInput","generate.weekdays","map","generate.month","_b","week","tabindex","onMouseOver","max","concat","_c","join","SmoothlyDialogStyle0","SmoothlyDialog","TriggerListener","Trigger","hostData","display","__stencil_render","closable","header","SmoothlyDialogDemo","height","getForwardWordBreakIndex","wordRegex","lastIndex","getBackwardWordBreakIndex","execArray","getAdjecentWordBreakIndex","direction","Selection","getCursor","selection","getStalker","State","copy","StateEditor","get","character","c","isDigit","matcher","s","slice","insert","append","prepend","delete","truncate","pad","padEnd","padStart","toLower","symbol","toUpper","toUpperCase","mapping","replacement","modify","Action","apply","formatter","action","unformat","autocomplete","select","ctrlArrow","ctrlBackspaceDelete","arrowHomeEnd","erase","allowed","format","paste","pasted","cursorPosition","stalkPosition","shiftKey","adjecentIndex","from","insertString","handlers","argument","data","handler","fromString","Handler","unformatted","formatted","Array","isArray","Number","issuer","getIssuer","verification","classes","defaultIssuer","issuers","prototype","hasOwnProperty","call","identification","amex","dankort","diners","discover","electron","interpayment","jcb","unionpay","maestro","mastercard","visa","DateFormat","fromLocale","locale","toLocale","Base","separator","validMonth","register","parameters","daysInMonth","lastOfMonth","fillerDate","isoly.DateTime","formatDate","validDate","daysPerMonth","split","patterns","extract","zeros","isoly.TimeSpan","span","normalize","minutes","hours","toHours","toFixed","abs","negative","parsed","multiplicand","isFinite","parseFloat","offset","nextValue","settings","mode","firstAllowedSymbol","previousAllowedSymbol","newSymbol","isNaN","isSymbolAllowed","isSymbolLetter","alignedString","previousSpace","country","parsedFloat","phonePrefix","countryCode","areaCodes","first","digitIndex","digitCount","spaces","ceil","position","currency","decimals","isoly.Currency","decimalDigits","adjust","repeat","charAt","SmoothlyDisplayStyle0","SmoothlyDisplay","getLocale","DateTime","localize","navigator","language","Locale","Language","SmoothlyDisplayAmountStyle0","SmoothlyDisplayAmount","amount","digitsPerGroup","defaultDecimals","maxDecimals","beforeSeparator","toInteger","SmoothlyDisplayDemo","noticeWarning","notice","hour","minute","second","timeZone","period","distance","width","align","justifyContent","whiteSpace","Notice","warn","succeeded","failed","execute","Promise","resolve","delay","Color","types","downloadingSpinner","overlay","gap","labels","l","hue","description","Rule","filter","stringify","precedence","creators","criteria","always","setFallback","fallback","Always","MAX_SAFE_INTEGER","Any","getOwnPropertyNames","property","And","rules","reduce","every","generalize","and","criterias","Criteria","isCriteria","recursive","defineProperty","exports","Level","Message_1","Level_1","require$$0","Message","level","Recoverable","region","ConsoleHandler_1","ConsoleHandler","raise","Position_1","Position","line","Location_1","Location","resource","Region_1","Region","merge","other","_Error","require$$1","require$$2","require$$3","require$$4","require$$5","User_1","User","isEmpty","splitted","Endpoint_1","Endpoint","host","Authority_1","Authority","user","endpoint","pop","Locator_1","Locator","authority","query","fragment","isRelative","isFolder","folder","extension","createArray","reverse","item","absolute","appendPath","keys","hasAuthority","shift","unshift","empty","Uri","Device_1","Device","InDevice_1","InDevice","Reader_1","Reader","addOpener","priority","openers","sort","locator","BufferedReader_1","Error","Reader_2","BufferedReader","backend","buffer","lastContent","lastMark","locationValue","tabSize","readable","opened","close","peek","read","splice","peekIs","v","readIf","readAll","mark","__awaiter","thisArg","_arguments","P","generator","adopt","reject","fulfilled","step","rejected","done","then","fs_browser","fd","fsync","write","encoding","bytesWritten","lstatSync","isDirectory","readdirSync","readFileSync","path_browser","sep","StringReader_1","StringReader","lastPosition","FileReader_1","fs","FileReader","p","FolderReader_1","FolderReader","files","tabSizeValue","lastLocation","getFiles","filetype","ignoreFiles","file","filename","f","Enumerator_1","generate","isIterator","Function","Enumerator","iterator","last","fetch","toArray","Enumerable_1","isIterable","Symbol","Enumerable","getEnumerator","ArrayEnumerator_1","ArrayEnumerator","BufferedEnumerator_1","BufferedEnumerator","_String","String","padLeft","paddingCharacter","padRight","Utilities","String_1","OutDevice_1","OutDevice","Writer_1","Utilities_1","Writer","newLineSymbol","writeImplementation","writeLine","Indenter_1","Indenter","autoFlush","indentionSymbol","indentionCount","indentNext","writable","flush","increase","decrease","getIndention","all","PrefixReader_1","PrefixReader","FileWriter_1","FileWriter","descriptor","Buffer","TillReader_1","TillReader","endMark","UntilReader_1","UntilReader","peeked","IO","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","build","IO_1","Source","reader","errorHandler","Critical","requirePrefix","till","until","peekIsSymbol","symbols","peekIsWhitespace","tokenize","source","peekSymbolLength","t","array","complete","baseObject","completor","flatMap","cursor","isType","global","Cursor","Completion","completions","completion","suggestion","Boolean","SType","literals","Completor","functions","string","expressions","operators","completorArgument","addArgument","TObject","properties","filtered","filterByType","matched","found","addDot","wildcard","w","partial","Union","template","full","addon","TArray","TString","TNumber","TBoolean","TCompletion","TUnion","TCompletor","EndsWith","needle","Every","arrayArgumentor","FunctionCall","identifier","definition","Expression","Value","evaluate","variable","GreaterThan","object","GreaterThanOrEqual","Has","Includes","Some","Is","LesserThan","LesserThanOrEqual","Not","not","Or","clone","nestingCount","needles","fetchIf","_","n","operator","comparator","binaryOperator","lexer.tokenize","parseNext","precedenceTest","parsers","parseExpression","algebra","parseNextExpression","NaN","expressionParser","expressionParsers","addExpression","getAdder","fetched","Within","within","Contains","contains","Property","reduceRight","StartsWith","InfixOperator","getPrecedence","getSymbol","nextPrecedence","fetchedArray","fetchedValue","expression","definitions","rule","resolvers","className","resolver","parameter","definitionRule","Tuple","EventEmitter","isly.object","isly.function","Filter","Element","isly.string","optional","isly.record","extend","smoothlyFilterUpdate","smoothlyFilterManipulate","SmoothlyFilterStyle0","SmoothlyFilter","updating","filters","selectively.and","updateHandler","manipulateHandler","smoothlyFilter","update","filterFieldHandler","clear","field","expanded","SmoothlyFilterFieldStyle0","SmoothlyFilterField","filterFieldEmit","smoothlyFilterField","selectively.parse","onKeyDown","onSmoothlyInputLooks","onSmoothlyBlur","onSmoothlyFormDisable","onSmoothlyInputLoad","onSmoothlyChange","SmoothlyFilterInputStyle0","SmoothlyFilterInput","componentDidLoad","bind","selectively.And","rest","selectively.Property","selectively.Includes","inputHandler","manipulate","newCriteria","getCriteria","findIndex","findInstanceOf","selectively.property","selectively.includes","placeholder","SmoothlyFilterPickerStyle0","SmoothlyFilterPicker","Map","smoothlyInputLooks","looks","optionChangeHandler","set","smoothlyInputLooksHandler","option","multiple","selectively.Within","selectively.Contains","selectively.Is","pickerHandler","selectively.Rule","selectively.contains","selectively.within","selectively.is","onSmoothlyPickerLoaded","SmoothlyFilterToggleStyle0","SmoothlyFilterToggle","active","activeHandler","selectively.Not","activate","selectively.not","createCriteria","check","Method","contentType","request","headers","text","serializers","serializer","serialize","fields","Header","isString","isStringArray","fromEntries","camelCase","CamelCase.from","isHeaders","trim","CamelCase.to","Request","k","method","remote","RequestHeader","async","Serializer.serialize","searchParams","Parser.parse","cloudflare","cf","PlatformResponse","Response","__classPrivateFieldGet","receiver","kind","__classPrivateFieldSet","_Socket_instances","_Socket_receiveQueue","_Socket_sendQueue","_Socket_closed","_Socket_backend","_Socket_onMessage","_Socket_onClose","_Socket_handleOpen","_Socket_onOpen","Socket","onMessage","onClose","onOpen","isOpen","processReceived","send","processSend","WeakMap","WeakSet","ArrayBuffer","arrayBuffer","TextEncoder","encode","Json","JSON","TextDecoder","decode","_Factory_json","_Factory_string","_Factory_arrayBuffer","Factory","json","SocketJson","SocketString","SocketArrayBuffer","createResponse","status","socket","reason","SocketFactory","getEntries","Like","ResponseHeader","WebSocket","Platform.Response","Headers","webSocket","response","ResponseLike","isView","FormData","isPdf","bytes","Uint8Array","Blob","toHelperObject","form","toHelperArray","head","tail","sources","isObject","encodeURIComponent","convertArrays","entry","decodeURIComponent","Parser.add","formData","Search.parse","Serializer.add","Search.stringify","Clearable","Editable","edit","readonly","isly.boolean","listen","reset","setInitialValue","changed","isly.any","smoothlyFormDisable","Looks","Input","isly.union","Data","valueType","binary","smoothlyInputLoad","smoothlyInput","smoothlyInputForm","SmoothlyFormStyle0","SmoothlyForm","readonlyAtLoad","listeners","listener","watchValue","watchReadonly","smoothlyInputHandler","smoothlyFormInput","windowSubmitHandler","submitHandler","smoothlyInputLoadHandler","smoothlyFormDisableHandler","submit","remove","processing","smoothlyFormSubmit","http\n .fetch","http.Request","http.Search.stringify","catch","smoothlyFormClear","editable","smoothlyFormEdit","smoothlyFormReset","hidden","onSubmit","prevent","SmoothlyFrameStyle0","SmoothlyFrame","contentWindow","iframe","firstElementChild","defaultOrigin","destination","trigger","message2","SmoothlyIconStyle0","SmoothlyIcon","nameChanged","promise","latestPromise","Icon","load","updateDocument","rotate","SmoothlyIconDemoStyle0","SmoothlyIconDemo","hostRef","page","flip","SmoothlyInputStyle0","SmoothlyInput","keepFocusOnReRender","uneditable","SmoothlyInputLoadHandler","typeChange","tidily.get","tidily.StateEditor","valueWatcher","before","initialValue","lastValue","smoothlyInputEmit","abortInputEvent","timeout","watchingReadonly","onCurrency","inputElement","focus","getFormData","forms","namedItem","elements","hasNameAndValue","smoothlyInputs","getElementsByTagName","setKeepFocusOnReRender","keepFocus","setSelectionRange","after","updateBackend","onBlur","smoothlyBlur","smoothlyChange","onFocus","selectionStart","selectionEnd","selectionDirection","processKey","onPaste","clipboardData","getData","expiresAutocompleteFix","processPaste","onInput","inputType","letter","attributes","getNamedItem","tidily.Action","setSelection","onclick","required","_d","readOnly","_e","_f","_g","el","htmlFor","isoly.Locale","isoly.Language","SmoothlyInputCheckboxStyle0","SmoothlyInputCheckbox","checked","elementCheck","SmoothlyInputClearStyle0","SmoothlyInputClear","parent","val","SmoothlyInputColorStyle0","SmoothlyInputColor","valueChanged","SmoothlyInputDateStyle0","InputDate","dateSetHandler","showLabel","onSmoothlyValueChange","SmoothlyInputDateRangeStyle0","SmoothlyInputDateRange","dateRangeInput","onSmoothlyStartChange","onSmoothlyEndChange","onSmoothlyDateSet","onSmoothlyDateRangeSet","SmoothlyInputDemoStyle0","SmoothlyInputDemo","clearable","showSelected","menuHeight","outputSide","duration","onSmoothlyFormSubmit","nextMonth","camera","SmoothlyInputDemoControlledFormStyle0","SmoothlyInputDemoControlledForm","currencies","SmoothlyInputEditStyle0","SmoothlyInputEdit","title","SmoothlyInputFileStyle0","SmoothlyInputFile","transfer","DataTransfer","items","dropHandler","dragging","dataTransfer","click","dragOverHandler","dragEnterHandler","dragLeaveHandler","onDragOver","onDragEnter","onDrop","onDragLeave","capture","accept","SmoothlyInputMonthStyle0","SmoothlyInputMonth","adjustMonth","delta","getMonth","searchDisabled","generate.years","generate.months","SmoothlyInputRadioStyle0","SmoothlyInputRadio","valueReceivedOnLoad","handleRegister","smoothlyRadioInputHandler","SmoothlyInputRadioItemStyle0","SmoothlyInputRadioItem","smoothlyRadioButtonRegister","smoothlySelect","SmoothlyInputRangeStyle0","SmoothlyInputRange","HTMLInputElement","valueAsNumber","round","SmoothlyInputResetStyle0","SmoothlyInputReset","tooltip","Item","deselectable","SmoothlyInputSelectStyle0","SmoothlyInputSelect","initialValueHandled","onSelectedChange","itemHeight","clientHeight","setProperty","displaySelected","handleShowOptions","displaySelectedElement","areValuesEqual","onRequiredChange","onFilterChange","iconsDiv","toggle","onWindowClick","onItemSelect","onClosed","marked","wasButtonClicked","displayString","visibleItems","getAttribute","move","smoothlyItemSelect","markedIndex","tabIndex","selectable","Submittable","SmoothlyInputSubmitStyle0","SmoothlyInputSubmit","onSmoothlyConfirm","SmoothlyItemStyle0","SmoothlyItem","selectedWatcher","innerText","SmoothlyLabelStyle0","SmoothlyLabel","SmoothlyLazyStyle0","SmoothlyLazy","loadMoreHandler","show","onSmoothlyLoadMore","SmoothlyLoadMoreStyle0","LoadMore","observer","IntersectionObserver","observationHandler","observe","intersectionRatio","smoothlyLoadMore","unobserve","disconnect","SmoothlyNextDemoStyle0","SmoothlyNextDemo","SmoothlyNextDemoColspanStyle0","SmoothlyNextDemoColspan","columns","SmoothlyNextDemoGroupStyle0","SmoothlyNextDemoGroup","Fragment","id","balance","age","eyeColor","gender","company","registered","friends","SmoothlyNextDemoNestedStyle0","SmoothlyNextDemoNested","SmoothlyNextDemoNestedInnerStyle0","SmoothlyNextDemoNestedInner","SmoothlyNextDemoSimpleStyle0","SmoothlyNextDemoSimple","cats","cat","breed","coat","SmoothlyNextTableStyle0","SmoothlyNextTable","SmoothlyNextTableBodyStyle0","SmoothlyNextTableBody","SmoothlyNextTableCellStyle0","SmoothlyNextTableCell","SmoothlyNextTableExpandableCellStyle0","SmoothlyNextTableExpandableCell","smoothlyNextTableExpandableCellRegister","smoothlyNextTableExpandableCellOpened","SmoothlyNextTableExpandableRowStyle0","SmoothlyNextTableExpandableRow","div","SmoothlyNextTableFootStyle0","SmoothlyNextTableFoot","SmoothlyNextTableHeadStyle0","SmoothlyNextTableHead","SmoothlyNextTableRowStyle0","SmoothlyNextTableRow","expandableCells","smoothlyNextTableExpandableCellRegisterHandler","smoothlyNextTableExpandableCellOpenedHandler","cell","SmoothlyNextTableRowGroupStyle0","SmoothlyNextTableRowGroup","SmoothlyNotificationStyle0","Notification","tick","onTrigger","onUpdatedNotice","newValue","oldValue","unlisten","SmoothlyNotifierStyle0","Notifier","onNotice","notices","onRemove","SmoothlyPickerStyle0","SmoothlyPicker","at","createElement","slotted","node","cloneNode","controls","smoothlyPickerLoaded","menuLoadedHandler","optionLoadedHandler","focusHandler","initialValueArray","selectedArray","nodes","mutable","validator","SmoothlyPickerDemoStyle0","validateEmail","email","SmoothlyPickerDemo","users","emails","change","remember","restore","loadedHandler","counter","onSmoothlyFormInput","flat","SmoothlyPickerMenuStyle0","Observers","chain","iterables","iterable","restoreListener","SmoothlyPickerMenu","threshold","flipChecked","smoothlyPickerMenuLoaded","memory","created","disconnectedCallback","parentElement","openChange","readonlyChanged","scrollHandler","optionLoadHandler","listElement","valid","toLocaleLowerCase","searches","addHandler","validation","searchElement","keyDownHandler","emptyDisplayHandler","onSmoothlySlottedChange","a","b","SmoothlyPickerOptionStyle0","SmoothlyPickerOption","emitChange","smoothlyPickerOptionChange","smoothlyPickerOptionLoad","__rest","smoothlyPickerOptionLoaded","slottedChangeHandler","SmoothlyPopupStyle0","SmoothlyPopup","popupElement","getBoundingClientRect","innerWidth","removeProperty","popup","SmoothlyQuietStyle0","SmoothlyQuiet","SmoothlySelectDemoStyle0","SmoothlySelectDemo","SmoothlySkeletonStyle0","SmoothlySkeleton","widths","floor","random","SmoothlySlotElementsStyle0","SmoothlySlotElements","smoothlySlotEmpty","SmoothlySlottedElementsStyle0","SmoothlySottedElement","childNodes","child","HTMLSlotElement","assigned","assignedNodes","smoothlySlottedChange","SmoothlySpinnerStyle0","SmoothlySpinner","strokeWidth","viewBox","xmlns","cx","cy","SmoothlySubmitStyle0","SmoothlySubmit","SmoothlySummaryStyle0","SmoothlySummary","toggleHandler","HTMLDetailsElement","smoothlySummaryOpen","onToggle","SmoothlyTabStyle0","SmoothlyTab","openHandler","expansionElement","expansionOpen","SmoothlyTabSwitchStyle0","SmoothlyTabSwitch","selectedElement","selectedTab","old","SmoothlyTableStyle0","Table","expandable","smoothlyNestedTable","root","smoothlyTableLoad","owner","handleExpandableLoaded","handleExpandableState","smoothlySpotlightChange","allowSpotlight","handleSpotlightState","handleNestedTable","handleEvents","SmoothlyTableCellStyle0","TableCell","SmoothlyTableDemoStyle0","TableDemo","src","alt","Selector","_Selector_selected","handle","intermediate","SmoothlyTableDemoFilteredStyle0","TableDemoFiltered","onFilterUpdate","selector","http.fetch","price","charCodeAt","nested","selectively.filter","colSpan","Australia","Greece","SmoothlyTableExpandableCellStyle0","TableExpandableCell","beginOpen","smoothlyExpandableChange","handleSpotlight","spotlight","smoothlyExpansionLoad","smoothlyExpandableLoad","smoothlyExpansionOpen","handleTableLoaded","SmoothlyTableExpandableRowStyle0","TableExpandableRow","SmoothlyTableFooterStyle0","TableFooter","SmoothlyTableHeaderStyle0","TableHeader","SmoothlyTableRowStyle0","TableRow","expansions","onExpansionLoad","onExpansionChange","expansion","onExpansionOpen","SmoothlyTableTestingStyle0","SmoothlyTableTesting","animal","SmoothlyThemeColorStyle0","SmoothlyThemeColor","variant","SmoothlyThemeColorVariantStyle0","SmoothlyThemeColorVariant","SmoothlyThemeColorsStyle0","SmoothlyThemeColors","SmoothlyThemePickerStyle0","SmoothlyThemePicker","querySelector","HTMLLinkElement","theme","SmoothlyToggleStyle0","SmoothlyToggle","SmoothlyToggleSwitchStyle0","SmoothlyToggleSwitch","handleClick","smoothlyToggleSwitchChange","SmoothlyTriggerStyle0","SmoothlyTrigger","SmoothlyTuple","tuple","Urlencoded"],"sources":["node_modules/isly/dist/mjs/any.js","src/components/app/style.css?tag=smoothly-app","src/components/app/index.tsx","src/components/app-demo/index.tsx","node_modules/urlpattern-polyfill/dist/urlpattern.js","node_modules/urlpattern-polyfill/index.js","src/components/app/room/style.css?tag=smoothly-app-room&encapsulation=scoped","src/components/app/room/index.tsx","src/components/backtotop/style.scss?tag=smoothly-back-to-top&encapsulation=scoped","src/components/backtotop/index.tsx","src/components/burger/style.css?tag=smoothly-burger&encapsulation=scoped","src/components/burger/index.tsx","src/components/Button.tsx","src/components/button/style.css?tag=smoothly-button&encapsulation=scoped","src/components/button/index.tsx","src/components/confirm/style.css?tag=smoothly-button-confirm&encapsulation=scoped","src/components/confirm/index.tsx","src/components/button-demo/style.css?tag=smoothly-button-demo","src/components/button-demo/index.tsx","src/components/calendar/generate.ts","src/components/calendar/style.css?tag=smoothly-calendar&encapsulation=scoped","src/components/calendar/index.tsx","src/components/dialog/style.css?tag=smoothly-dialog&encapsulation=scoped","src/components/dialog/index.tsx","src/components/dialog-demo/index.tsx","node_modules/tidily/dist/mjs/getAdjecentWordBreakIndex.js","node_modules/tidily/dist/mjs/Selection.js","node_modules/tidily/dist/mjs/State.js","node_modules/tidily/dist/mjs/StateEditor.js","node_modules/tidily/dist/mjs/Action.js","node_modules/tidily/dist/mjs/Handler/base.js","node_modules/tidily/dist/mjs/Handler/card-csc.js","node_modules/tidily/dist/mjs/Handler/card-expires.js","node_modules/tidily/dist/mjs/Handler/card-number.js","node_modules/tidily/dist/mjs/DateFormat.js","node_modules/tidily/dist/mjs/Handler/date/Base.js","node_modules/tidily/dist/mjs/Handler/date/dmy.js","node_modules/tidily/dist/mjs/Handler/date/mdy.js","node_modules/tidily/dist/mjs/Handler/date/ymd.js","node_modules/tidily/dist/mjs/Handler/date-time.js","node_modules/tidily/dist/mjs/Handler/divisor.js","node_modules/tidily/dist/mjs/Handler/duration.js","node_modules/tidily/dist/mjs/Handler/identifier.js","node_modules/tidily/dist/mjs/Handler/identity-number.js","node_modules/tidily/dist/mjs/Handler/integer.js","node_modules/tidily/dist/mjs/Handler/password.js","node_modules/tidily/dist/mjs/Handler/percent.js","node_modules/tidily/dist/mjs/Handler/phonePrefix.js","node_modules/tidily/dist/mjs/Handler/phone.js","node_modules/tidily/dist/mjs/Handler/postal-code.js","node_modules/tidily/dist/mjs/Handler/price.js","node_modules/tidily/dist/mjs/Handler/text.js","src/components/display/style.css?tag=smoothly-display&encapsulation=scoped","src/components/display/index.tsx","src/components/display-amount/style.css?tag=smoothly-display-amount&encapsulation=scoped","src/components/display-amount/index.tsx","src/components/display-demo/index.tsx","node_modules/selectively/dist/mjs/Rule.js","node_modules/selectively/dist/mjs/Always.js","node_modules/selectively/dist/mjs/Any.js","node_modules/selectively/dist/mjs/And.js","node_modules/selectively/dist/mjs/Criteria.js","node_modules/@cogneco/mend/build/Error/Level.js","node_modules/@cogneco/mend/build/Error/Message.js","node_modules/@cogneco/mend/build/Error/ConsoleHandler.js","node_modules/@cogneco/mend/build/Error/Position.js","node_modules/@cogneco/mend/build/Error/Location.js","node_modules/@cogneco/mend/build/Error/Region.js","node_modules/@cogneco/mend/build/Error/index.js","node_modules/@cogneco/mend/build/Uri/User.js","node_modules/@cogneco/mend/build/Uri/Endpoint.js","node_modules/@cogneco/mend/build/Uri/Authority.js","node_modules/@cogneco/mend/build/Uri/Locator.js","node_modules/@cogneco/mend/build/Uri/index.js","node_modules/@cogneco/mend/build/IO/Device.js","node_modules/@cogneco/mend/build/IO/InDevice.js","node_modules/@cogneco/mend/build/IO/Reader.js","node_modules/@cogneco/mend/build/IO/BufferedReader.js","node_modules/@cogneco/mend/build/IO/fs.browser.js","node_modules/@cogneco/mend/build/IO/path.browser.js","node_modules/@cogneco/mend/build/IO/StringReader.js","node_modules/@cogneco/mend/build/IO/FileReader.js","node_modules/@cogneco/mend/build/IO/FolderReader.js","node_modules/@cogneco/mend/build/Utilities/Enumerator.js","node_modules/@cogneco/mend/build/Utilities/Enumerable.js","node_modules/@cogneco/mend/build/Utilities/ArrayEnumerator.js","node_modules/@cogneco/mend/build/Utilities/BufferedEnumerator.js","node_modules/@cogneco/mend/build/Utilities/String.js","node_modules/@cogneco/mend/build/Utilities/index.js","node_modules/@cogneco/mend/build/IO/OutDevice.js","node_modules/@cogneco/mend/build/IO/Writer.js","node_modules/@cogneco/mend/build/IO/Indenter.js","node_modules/@cogneco/mend/build/IO/PrefixReader.js","node_modules/@cogneco/mend/build/IO/FileWriter.js","node_modules/@cogneco/mend/build/IO/TillReader.js","node_modules/@cogneco/mend/build/IO/UntilReader.js","node_modules/@cogneco/mend/build/IO/index.js","node_modules/@cogneco/mend/build/index.js","node_modules/selectively/dist/mjs/lexer/Source.js","node_modules/selectively/dist/mjs/lexer/index.js","node_modules/selectively/dist/mjs/Type/Base.js","node_modules/selectively/dist/mjs/Type/Array.js","node_modules/selectively/dist/mjs/Type/Cursor.js","node_modules/selectively/dist/mjs/Type/Completion.js","node_modules/selectively/dist/mjs/Type/Boolean.js","node_modules/selectively/dist/mjs/Type/Completor.js","node_modules/selectively/dist/mjs/Type/Number.js","node_modules/selectively/dist/mjs/Type/Object.js","node_modules/selectively/dist/mjs/Type/String.js","node_modules/selectively/dist/mjs/Type/Union.js","node_modules/selectively/dist/mjs/Type/index.js","node_modules/selectively/dist/mjs/EndsWith.js","node_modules/selectively/dist/mjs/Every.js","node_modules/selectively/dist/mjs/FunctionCall.js","node_modules/selectively/dist/mjs/Expression.js","node_modules/selectively/dist/mjs/Value.js","node_modules/selectively/dist/mjs/GreaterThan.js","node_modules/selectively/dist/mjs/GreaterThanOrEqual.js","node_modules/selectively/dist/mjs/Has.js","node_modules/selectively/dist/mjs/Includes.js","node_modules/selectively/dist/mjs/Some.js","node_modules/selectively/dist/mjs/Is.js","node_modules/selectively/dist/mjs/LesserThan.js","node_modules/selectively/dist/mjs/LesserThanOrEqual.js","node_modules/selectively/dist/mjs/Match.js","node_modules/selectively/dist/mjs/Not.js","node_modules/selectively/dist/mjs/Or.js","node_modules/selectively/dist/mjs/parse/Source.js","node_modules/selectively/dist/mjs/parse/parse.js","node_modules/selectively/dist/mjs/parse/Expression.js","node_modules/selectively/dist/mjs/parse/Every.js","node_modules/selectively/dist/mjs/parse/Some.js","node_modules/selectively/dist/mjs/parse/group.js","node_modules/selectively/dist/mjs/parse/GreaterThan.js","node_modules/selectively/dist/mjs/parse/GreaterThanOrEqual.js","node_modules/selectively/dist/mjs/parse/LesserThan.js","node_modules/selectively/dist/mjs/parse/LesserThanOrEqual.js","node_modules/selectively/dist/mjs/parse/Not.js","node_modules/selectively/dist/mjs/parse/Has.js","node_modules/selectively/dist/mjs/Within.js","node_modules/selectively/dist/mjs/parse/Within.js","node_modules/selectively/dist/mjs/Contains.js","node_modules/selectively/dist/mjs/parse/Contains.js","node_modules/selectively/dist/mjs/parse/FunctionCall.js","node_modules/selectively/dist/mjs/Property.js","node_modules/selectively/dist/mjs/parse/Property.js","node_modules/selectively/dist/mjs/parse/Includes.js","node_modules/selectively/dist/mjs/StartsWith.js","node_modules/selectively/dist/mjs/parse/StartsWith.js","node_modules/selectively/dist/mjs/parse/EndsWith.js","node_modules/selectively/dist/mjs/InfixOperator.js","node_modules/selectively/dist/mjs/parse/InfixOperator.js","node_modules/selectively/dist/mjs/parse/Value.js","node_modules/selectively/dist/mjs/parse/Is.js","node_modules/selectively/dist/mjs/parse/ignore.js","node_modules/selectively/dist/mjs/resolve/resolve.js","node_modules/selectively/dist/mjs/resolve/And.js","node_modules/selectively/dist/mjs/resolve/replace.js","node_modules/selectively/dist/mjs/resolve/Endswith.js","node_modules/selectively/dist/mjs/resolve/Every.js","node_modules/selectively/dist/mjs/resolve/FunctionCall.js","node_modules/selectively/dist/mjs/resolve/GreaterThan.js","node_modules/selectively/dist/mjs/resolve/GreaterThanOrEqual.js","node_modules/selectively/dist/mjs/resolve/Has.js","node_modules/selectively/dist/mjs/resolve/Includes.js","node_modules/selectively/dist/mjs/resolve/LesserThan.js","node_modules/selectively/dist/mjs/resolve/LesserThanOrEqual.js","node_modules/selectively/dist/mjs/resolve/Not.js","node_modules/selectively/dist/mjs/resolve/Or.js","node_modules/selectively/dist/mjs/resolve/Property.js","node_modules/selectively/dist/mjs/resolve/Some.js","node_modules/selectively/dist/mjs/resolve/Startswith.js","node_modules/selectively/dist/mjs/resolve/Is.js","node_modules/selectively/dist/mjs/Tuple.js","node_modules/selectively/dist/mjs/selectively.js","src/components/filter/Filter.ts","src/components/filter/style.css?tag=smoothly-filter&encapsulation=scoped","src/components/filter/index.tsx","src/components/filter/field/style.css?tag=smoothly-filter-field&encapsulation=scoped","src/components/filter/field/index.tsx","src/components/filter/input/style.css?tag=smoothly-filter-input&encapsulation=scoped","src/components/filter/input/index.tsx","src/components/filter/picker/style.css?tag=smoothly-filter-picker&encapsulation=scoped","src/components/filter/picker/index.tsx","src/components/filter/toggle/style.css?tag=smoothly-filter-toggle&encapsulation=scoped","src/components/filter/toggle/index.tsx","node_modules/cloudly-http/dist/Method.js","node_modules/cloudly-http/dist/Parser.js","node_modules/cloudly-http/dist/Serializer.js","node_modules/cloudly-http/dist/CamelCase.js","node_modules/cloudly-http/dist/Request/Header.js","node_modules/cloudly-http/dist/Request/index.js","node_modules/cloudly-http/dist/Platform.js","node_modules/cloudly-http/dist/Socket/Socket.js","node_modules/cloudly-http/dist/Socket/ArrayBuffer.js","node_modules/cloudly-http/dist/Socket/Json.js","node_modules/cloudly-http/dist/Socket/String.js","node_modules/cloudly-http/dist/Socket/Factory.js","node_modules/cloudly-http/dist/Socket/index.js","node_modules/cloudly-http/dist/Response/Header.js","node_modules/cloudly-http/dist/Response/Like.js","node_modules/cloudly-http/dist/Response/index.js","node_modules/cloudly-http/dist/fetch.js","node_modules/cloudly-http/dist/FormData.js","node_modules/cloudly-http/dist/Search.js","node_modules/cloudly-http/dist/index.js","src/components/input/Clearable.ts","src/components/input/Editable.ts","src/components/input/Looks.ts","src/components/input/Input.ts","src/components/form/style.css?tag=smoothly-form","src/components/form/index.tsx","src/components/frame/style.css?tag=smoothly-frame&encapsulation=scoped","src/components/frame/index.tsx","src/components/icon/style.css?tag=smoothly-icon&encapsulation=scoped","src/components/icon/index.tsx","src/components/icon-demo/style.css?tag=smoothly-icon-demo&encapsulation=scoped","src/components/icon-demo/index.tsx","src/components/input/style.css?tag=smoothly-input&encapsulation=scoped","src/components/input/index.tsx","src/components/input/checkbox/style.css?tag=smoothly-input-checkbox&encapsulation=scoped","src/components/input/checkbox/index.tsx","src/components/input/clear/style.css?tag=smoothly-input-clear&encapsulation=scoped","src/components/input/clear/index.tsx","src/components/input/color/style.css?tag=smoothly-input-color&encapsulation=scoped","src/components/input/color/index.tsx","src/components/input/date/style.css?tag=smoothly-input-date&encapsulation=scoped","src/components/input/date/index.tsx","src/components/input/date/range/style.scss?tag=smoothly-input-date-range&encapsulation=scoped","src/components/input/date/range/index.tsx","src/components/input/demo/style.css?tag=smoothly-input-demo","src/components/input/demo/index.tsx","src/components/input/demo/controlled-form/style.css?tag=smoothly-input-demo-controlled-form&encapsulation=scoped","src/components/input/demo/controlled-form/index.tsx","src/components/input/edit/style.css?tag=smoothly-input-edit&encapsulation=scoped","src/components/input/edit/index.tsx","src/components/input/file/style.css?tag=smoothly-input-file&encapsulation=scoped","src/components/input/file/index.tsx","src/components/input/month/style.css?tag=smoothly-input-month&encapsulation=scoped","src/components/input/month/index.tsx","src/components/input/radio/style.css?tag=smoothly-input-radio&encapsulation=scoped","src/components/input/radio/index.tsx","src/components/input/radio/item/style.css?tag=smoothly-input-radio-item&encapsulation=scoped","src/components/input/radio/item/index.tsx","src/components/input/range/style.css?tag=smoothly-input-range&encapsulation=scoped","src/components/input/range/index.tsx","src/components/input/reset/style.css?tag=smoothly-input-reset&encapsulation=scoped","src/components/input/reset/index.tsx","src/components/item/Item.ts","src/components/input/select/style.css?tag=smoothly-input-select&encapsulation=scoped","src/components/input/select/index.tsx","src/components/input/Submittable.ts","src/components/input/submit/style.css?tag=smoothly-input-submit&encapsulation=scoped","src/components/input/submit/index.tsx","src/components/item/style.css?tag=smoothly-item&encapsulation=scoped","src/components/item/index.tsx","src/components/label/style.css?tag=smoothly-label&encapsulation=scoped","src/components/label/index.tsx","src/components/lazy/style.css?tag=smoothly-lazy&encapsulation=scoped","src/components/lazy/index.tsx","src/components/load-more/style.css?tag=smoothly-load-more&encapsulation=scoped","src/components/load-more/index.tsx","src/components/next/demo/style.css?tag=smoothly-next-demo&encapsulation=scoped","src/components/next/demo/index.tsx","src/components/next/demo/colspan/style.css?tag=smoothly-next-demo-colspan&encapsulation=scoped","src/components/next/demo/colspan/index.tsx","src/components/next/demo/group/style.css?tag=smoothly-next-demo-group&encapsulation=scoped","src/components/next/demo/group/index.tsx","src/components/next/demo/nested/data.ts","src/components/next/demo/nested/style.css?tag=smoothly-next-demo-nested&encapsulation=scoped","src/components/next/demo/nested/index.tsx","src/components/next/demo/nested/inner/style.css?tag=smoothly-next-demo-nested-inner&encapsulation=scoped","src/components/next/demo/nested/inner/index.tsx","src/components/next/demo/simple/style.css?tag=smoothly-next-demo-simple&encapsulation=scoped","src/components/next/demo/simple/simple.tsx","src/components/next/table/style.css?tag=smoothly-next-table&encapsulation=scoped","src/components/next/table/index.tsx","src/components/next/table/body/style.css?tag=smoothly-next-table-body&encapsulation=scoped","src/components/next/table/body/index.tsx","src/components/next/table/cell/style.css?tag=smoothly-next-table-cell&encapsulation=scoped","src/components/next/table/cell/index.tsx","src/components/next/table/expandable/cell/style.css?tag=smoothly-next-table-expandable-cell&encapsulation=scoped","src/components/next/table/expandable/cell/index.tsx","src/components/next/table/expandable/row/style.css?tag=smoothly-next-table-expandable-row&encapsulation=scoped","src/components/next/table/expandable/row/index.tsx","src/components/next/table/foot/style.css?tag=smoothly-next-table-foot&encapsulation=scoped","src/components/next/table/foot/index.tsx","src/components/next/table/head/style.css?tag=smoothly-next-table-head&encapsulation=scoped","src/components/next/table/head/index.tsx","src/components/next/table/row/style.css?tag=smoothly-next-table-row&encapsulation=scoped","src/components/next/table/row/index.tsx","src/components/next/table/group/style.css?tag=smoothly-next-table-row-group&encapsulation=scoped","src/components/next/table/group/index.tsx","src/components/notification/style.css?tag=smoothly-notification&encapsulation=scoped","src/components/notification/index.tsx","src/components/notifier/style.css?tag=smoothly-notifier&encapsulation=scoped","src/components/notifier/index.tsx","src/components/picker/style.css?tag=smoothly-picker&encapsulation=scoped","src/components/picker/index.tsx","src/components/picker/demo/style.css?tag=smoothly-picker-demo&encapsulation=scoped","src/components/picker/demo/index.tsx","src/components/picker/menu/style.css?tag=smoothly-picker-menu&encapsulation=scoped","src/components/picker/menu/index.tsx","src/components/picker/option/style.css?tag=smoothly-picker-option&encapsulation=shadow","src/components/picker/option/index.tsx","src/components/popup/style.css?tag=smoothly-popup&encapsulation=scoped","src/components/popup/index.tsx","src/components/quiet/style.css?tag=smoothly-quiet&encapsulation=scoped","src/components/quiet/index.tsx","src/components/select-demo/style.css?tag=smoothly-select-demo&encapsulation=scoped","src/components/select-demo/index.tsx","src/components/skeleton/style.css?tag=smoothly-skeleton&encapsulation=scoped","src/components/skeleton/index.tsx","src/components/picker/slot-elements/style.css?tag=smoothly-slot-elements&encapsulation=scoped","src/components/picker/slot-elements/index.tsx","src/components/picker/slotted-elements/style.css?tag=smoothly-slotted-elements&encapsulation=scoped","src/components/picker/slotted-elements/index.tsx","src/components/spinner/style.css?tag=smoothly-spinner&encapsulation=scoped","src/components/spinner/index.tsx","src/components/submit/style.css?tag=smoothly-submit&encapsulation=scoped","src/components/submit/index.tsx","src/components/summary/style.css?tag=smoothly-summary&encapsulation=scoped","src/components/summary/index.tsx","src/components/tab/style.css?tag=smoothly-tab&encapsulation=scoped","src/components/tab/index.tsx","src/components/tab-switch/style.css?tag=smoothly-tab-switch&encapsulation=scoped","src/components/tab-switch/index.tsx","src/components/table/style.css?tag=smoothly-table&encapsulation=scoped","src/components/table/index.tsx","src/components/table/cell/style.css?tag=smoothly-table-cell&encapsulation=scoped","src/components/table/cell/index.tsx","src/components/table/demo/style.css?tag=smoothly-table-demo&encapsulation=scoped","src/components/table/demo/index.tsx","src/components/table/Selector.tsx","src/components/table/demo/filtered/style.css?tag=smoothly-table-demo-filtered&encapsulation=scoped","src/components/table/demo/filtered/index.tsx","src/components/table/expandable/cell/style.css?tag=smoothly-table-expandable-cell&encapsulation=scoped","src/components/table/expandable/cell/index.tsx","src/components/table/expandable/row/style.css?tag=smoothly-table-expandable-row&encapsulation=scoped","src/components/table/expandable/row/index.tsx","src/components/table/footer/style.css?tag=smoothly-table-footer&encapsulation=scoped","src/components/table/footer/index.tsx","src/components/table/header/style.css?tag=smoothly-table-header&encapsulation=scoped","src/components/table/header/index.tsx","src/components/table/row/style.css?tag=smoothly-table-row&encapsulation=scoped","src/components/table/row/index.tsx","src/components/table/demo/testing/data.ts","src/components/table/demo/testing/style.css?tag=smoothly-table-testing&encapsulation=scoped","src/components/table/demo/testing/index.tsx","src/components/theme/color/style.css?tag=smoothly-theme-color&encapsulation=scoped","src/components/theme/color/index.tsx","src/components/theme/color/variant/style.css?tag=smoothly-theme-color-variant&encapsulation=scoped","src/components/theme/color/variant/index.tsx","src/components/theme/colors/style.css?tag=smoothly-theme-colors&encapsulation=scoped","src/components/theme/colors/index.tsx","src/components/theme/picker/style.css?tag=smoothly-theme-picker&encapsulation=scoped","src/components/theme/picker/index.tsx","src/components/toggle/style.css?tag=smoothly-toggle&encapsulation=scoped","src/components/toggle/toggle.tsx","src/components/toggle-switch/style.css?tag=smoothly-toggle-switch&encapsulation=shadow","src/components/toggle-switch/index.tsx","src/components/trigger/style.css?tag=smoothly-trigger&encapsulation=scoped","src/components/trigger/index.tsx","src/components/tuple/index.tsx","src/components/urlencoded/index.tsx"],"sourcesContent":["import { Type } from \"./Type\";\nclass IslyAny extends Type {\n constructor() {\n super(...arguments);\n this.is = (value => value != undefined);\n }\n}\nexport function any(name) {\n return new IslyAny(name ?? \"any\");\n}\n//# sourceMappingURL=any.js.map","smoothly-app {\n\t--header-height: 5rem;\n\tdisplay: block;\n}\n\nsmoothly-app>smoothly-notifier>main {\n\theight: calc(100dvh - var(--header-height));\n}\n\nsmoothly-app[hidden] {\n\tdisplay: none;\n}\n\nsmoothly-app>smoothly-notifier {\n\theight: 100%;\n\tbackground: none;\n}\n\nsmoothly-app>smoothly-notifier>header {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 5;\n\twidth: 100%;\n\theight: var(--header-height);\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tbox-sizing: border-box;\n\talign-items: center;\n\tbox-shadow: 0 2px 5px 0 rgba(var(--smoothly-dark-shadow));\n\tborder-bottom: 1px solid rgba(var(--smoothly-dark-color));\n\tbackground: rgba(var(--smoothly-color));\n\tcolor: rgba(var(--smoothly-color-contrast));\n}\n\nsmoothly-app>smoothly-notifier>header>nav {\n\twidth: 100%;\n\tflex-shrink: 2;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav,\nsmoothly-app>smoothly-notifier>header>nav>ul {\n\tdisplay: flex;\n\tmargin: 0;\n}\n\nsmoothly-app>smoothly-notifier>header>h1 {\n\tmargin-left: 1rem;\n\tmargin-bottom: 0.8em;\n\tdisplay: flex;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>h1>a {\n\tdisplay: inline-block;\n\talign-self: center;\n\tsize: 100%;\n\tbackground-position-y: center;\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul li a {\n\tline-height: 1.6cm;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul li a {\n\tline-height: 1.6cm;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul {\n\twidth: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-end-container {\n\tdisplay: flex;\n\tgap: 1rem;\n\talign-items: center;\n\theight: 100%;\n\tmargin-left: auto;\n\tmargin-right: 1rem;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>[slot=\"nav-end\"] {\n\twidth: fit-content;\n\tgap: 0.5em;\n\talign-self: center;\n\theight: fit-content;\n\tmargin-left: 10rem;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul li a {\n\tdisplay: flex;\n\theight: 2.3rem;\n\ttext-decoration: none;\n\talign-items: center;\n\talign-self: center;\n}\n\n@media screen and (max-width: 900px) {\n\tsmoothly-app>smoothly-notifier>header>nav {\n\t\twidth: 50dvw;\n\t\tmax-width: 15rem;\n\t\ttop: 100%;\n\t\tposition: absolute;\n\t\tmax-height: calc(100dvh - var(--header-height));\n\t\toverflow-y: scroll;\n\t\tright: 0;\n\t\theight: auto;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav,\n\tsmoothly-app>smoothly-notifier>header>nav>ul {\n\t\tflex-direction: column;\n\t\tbackground-color: rgba(var(--smoothly-color));\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul {\n\t\tpadding: 1.5rem;\n\t\tbox-sizing: border-box;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul li {\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 1em;\n\t\twidth: 100%;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>smoothly-burger {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>[slot=\"nav-start\"] {\n\t\tdisplay: none;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container,\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-end-container {\n\t\tflex-direction: column;\n\t\tmargin: 0;\n\t\talign-items: start;\n\t\tjustify-content: center;\n\t\tgap: 1em;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container>*:last-child {\n\t\tmargin-bottom: 1em;\n\t}\n}\n\nsmoothly-app>smoothly-notifier>header>nav:not(.menu-open) {\n\tdisplay: none;\n}\nsmoothly-app>smoothly-notifier>main>div {\n\toverflow-y: scroll;\n\theight: 100%;\n}\n","import { Component, h, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { SmoothlyAppRoomCustomEvent } from \"../../components\"\nimport { Color } from \"../../model\"\n\ntype Room = {\n\telement: HTMLSmoothlyAppRoomElement\n}\n@Component({\n\ttag: \"smoothly-app\",\n\tstyleUrl: \"style.css\",\n\tscoped: false,\n})\nexport class SmoothlyApp {\n\t@Prop() label = \"App\"\n\t@Prop() color: Color\n\t@Prop() home?: string\n\t@Prop({ mutable: true, reflect: true }) menuOpen = false\n\t@State() selected?: Room\n\tprivate burgerVisibility: boolean\n\tprivate burgerElement?: HTMLElement\n\tprivate navElement?: HTMLElement\n\tmainElement?: HTMLElement\n\trooms: Record<string, Room | undefined> = {}\n\tasync componentDidRender() {\n\t\tif (!this.selected && !window.location.search)\n\t\t\t(this.home && this.rooms[this.home]\n\t\t\t\t? this.rooms[this.home]\n\t\t\t\t: Object.values(this.rooms).find(room => !room?.element.disabled)\n\t\t\t)?.element.setSelected(true)\n\t}\n\t@Method()\n\tasync selectRoom(path: string) {\n\t\tthis.rooms[path]?.element.setSelected(true)\n\t}\n\t@Watch(\"selected\")\n\tasync selectedChanged() {\n\t\tObject.values(this.rooms).forEach(\n\t\t\troom => room?.element.path != this.selected?.element.path && room?.element.setSelected(false)\n\t\t)\n\t\tconst content = await this.selected?.element.getContent()\n\t\tif (this.mainElement && content) {\n\t\t\tthis.mainElement.innerHTML = \"\"\n\t\t\tthis.mainElement.appendChild(content)\n\t\t}\n\t}\n\tburgerVisibilityHandler(event: CustomEvent<boolean>) {\n\t\tthis.burgerVisibility = event.detail\n\t}\n\tburgerStatusHandler(event: CustomEvent<boolean>) {\n\t\tevent.stopPropagation()\n\t\tthis.menuOpen = event.detail\n\t}\n\t@Listen(\"popstate\", { target: \"window\" })\n\tasync locationChangeHandler(event: PopStateEvent) {\n\t\tthis.rooms[event.state.smoothlyPath]?.element.setSelected(true, { history: true })\n\t}\n\t@Listen(\"smoothlyRoomSelected\")\n\troomSelectedHandler(event: SmoothlyAppRoomCustomEvent<{ history: boolean }>) {\n\t\tthis.selected = { element: event.target }\n\t\tif (this.burgerVisibility)\n\t\t\tthis.menuOpen = false\n\t\tif (!event.detail.history) {\n\t\t\tconst path = this.selected.element.path.toString()\n\t\t\tconst location = new URL(window.location.pathname == path ? window.location.href : window.location.origin)\n\t\t\tlocation.pathname = path\n\t\t\twindow.history.pushState({ smoothlyPath: path }, \"\", location.href)\n\t\t}\n\t}\n\t@Listen(\"smoothlyRoomLoaded\")\n\troomLoadedHandler(event: SmoothlyAppRoomCustomEvent<{ selected: boolean }>) {\n\t\tconst room = (this.rooms[event.target.path.toString()] = { element: event.target })\n\t\tif (room.element.selected) {\n\t\t\tthis.selected = room\n\t\t\twindow.history.replaceState({ smoothlyPath: room.element.path }, \"\", window.location.href)\n\t\t}\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tclickHandler(event: MouseEvent) {\n\t\tif (this.burgerVisibility)\n\t\t\tif (event.composedPath().some(e => e == this.burgerElement || e == this.navElement))\n\t\t\t\t!this.menuOpen\n\t\t\telse\n\t\t\t\tthis.menuOpen = false\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-notifier>\n\t\t\t\t<header color={this.color}>\n\t\t\t\t\t<h1>\n\t\t\t\t\t\t<a href={\"\"}>{this.label}</a>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t<nav ref={e => (this.navElement = e)} class={{ \"menu-open\": this.menuOpen }}>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<div class={\"nav-start-container\"}>\n\t\t\t\t\t\t\t\t<slot name=\"nav-start\"></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<slot> </slot>\n\t\t\t\t\t\t\t<div class={\"nav-end-container\"}>\n\t\t\t\t\t\t\t\t<slot name=\"nav-end\"></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</nav>\n\t\t\t\t\t<smoothly-burger\n\t\t\t\t\t\tref={e => (this.burgerElement = e)}\n\t\t\t\t\t\topen={this.menuOpen}\n\t\t\t\t\t\tonSmoothlyNavStatus={e => this.burgerStatusHandler(e)}\n\t\t\t\t\t\tonSmoothlyVisibleStatus={e => this.burgerVisibilityHandler(e)}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t\t<main ref={e => (this.mainElement = e)}></main>\n\t\t\t</smoothly-notifier>\n\t\t)\n\t}\n}\n","import { Component, h, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-app-demo\",\n})\nexport class SmoothlyAppDemo {\n\t@Prop() baseUrl: string\n\tapp?: HTMLSmoothlyAppElement\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-app color=\"dark\" label=\"Smoothly Demo\" home=\"/root\" ref={e => (this.app = e)}>\n\t\t\t\t<smoothly-trigger slot=\"nav-start\" type=\"link\" name=\"logout\">\n\t\t\t\t\t<smoothly-icon toolTip={\"Log out\"} name=\"log-out\" size=\"medium\"></smoothly-icon>\n\t\t\t\t</smoothly-trigger>\n\t\t\t\t<smoothly-app-room path=\"/root\" label=\"root\">\n\t\t\t\t\t<h2>Theme</h2>\n\t\t\t\t\t<smoothly-theme-picker>\n\t\t\t\t\t\t<smoothly-item value=\"assets/style/smoothly.css\">Smoothly</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://app.issuefab.com/assets/style/index.css\">Issuefab</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://app.proquse.com/assets/style/index.css\">Proquse</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://app.weekmeter.com/assets/style/index.css\">Weekmeter</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://dash.pax2pay.app/p2pdash.css\">Pax2Pay Dashboard</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://ui.pax2pay.app/assets/style/pax2pay.css\">Pax2Pay Portal</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/intergiro/index.css\">Intergiro Monitor</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/light/index.css\">Payfunc Light</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/dark/index.css\">Payfunc Dark</smoothly-item>\n\t\t\t\t\t</smoothly-theme-picker>\n\t\t\t\t\t<smoothly-theme-colors></smoothly-theme-colors>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\t\tTo redirect\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\t\tTo /redirect\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link={new URL(\"/redirect\", window.location.origin).href}>\n\t\t\t\t\t\tTo new URL(\"redirect\")\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"redirect/nested\">\n\t\t\t\t\t\tTo redirect nested\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/links\" label=\"Links\">\n\t\t\t\t\t<smoothly-input type=\"text\">Default</smoothly-input>\n\t\t\t\t\t<div style={{ padding: \"1em\", maxWidth: \"12em\" }}>\n\t\t\t\t\t\t<smoothly-button fill=\"solid\" color=\"danger\" link=\"https://google.com\">\n\t\t\t\t\t\t\topen\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\t\tfill=\"solid\"\n\t\t\t\t\t\t\tcolor=\"danger\"\n\t\t\t\t\t\t\tlink=\"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf\"\n\t\t\t\t\t\t\ttype=\"download\">\n\t\t\t\t\t\t\tdownload\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button fill=\"solid\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button disabled fill=\"solid\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button type=\"link\" fill=\"clear\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction link\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/input\" label=\"Input\">\n\t\t\t\t\t<smoothly-input-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/button\" label=\"Button\">\n\t\t\t\t\t<smoothly-button-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/dialog\" label=\"Dialog\">\n\t\t\t\t\t<smoothly-dialog-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/display\" label=\"Display\" icon=\"eye-outline\">\n\t\t\t\t\t<smoothly-display-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/table\" label=\"Table\">\n\t\t\t\t\t<smoothly-table-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/next\" label=\"Next\">\n\t\t\t\t\t<smoothly-next-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/select\" label=\"Select\">\n\t\t\t\t\t<smoothly-select-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/icon\" label=\"Icon\" content={<smoothly-icon-demo />}></smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/old\" label=\"Old\" to=\"select\"></smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/redirect\" label=\"Redirect\">\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/input\">\n\t\t\t\t\t\tTo input\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"../button\">\n\t\t\t\t\t\tTo button\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link={new URL(\"/hidden\", window.location.origin).href}>\n\t\t\t\t\t\tTo hidden\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\t\tTo redirect\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"nested\">\n\t\t\t\t\t\tTo redirect nested, relative path\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/hidden\">\n\t\t\t\t\t<p>hello world!</p>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/redirect/nested\">this is a nested room</smoothly-app-room>\n\t\t\t</smoothly-app>\n\t\t)\n\t}\n}\n","// src/path-to-regex-modified.ts\nvar Part = class {\n constructor(type, name, prefix, value, suffix, modifier) {\n this.type = 3 /* kFixed */;\n this.name = \"\";\n this.prefix = \"\";\n this.value = \"\";\n this.suffix = \"\";\n this.modifier = 3 /* kNone */;\n this.type = type;\n this.name = name;\n this.prefix = prefix;\n this.value = value;\n this.suffix = suffix;\n this.modifier = modifier;\n }\n hasCustomName() {\n return this.name !== \"\" && typeof this.name !== \"number\";\n }\n};\nvar regexIdentifierStart = /[$_\\p{ID_Start}]/u;\nvar regexIdentifierPart = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\nvar kFullWildcardRegex = \".*\";\nfunction isASCII(str, extended) {\n return (extended ? /^[\\x00-\\xFF]*$/ : /^[\\x00-\\x7F]*$/).test(str);\n}\nfunction lexer(str, lenient = false) {\n const tokens = [];\n let i = 0;\n while (i < str.length) {\n const char = str[i];\n const ErrorOrInvalid = function(msg) {\n if (!lenient)\n throw new TypeError(msg);\n tokens.push({ type: \"INVALID_CHAR\", index: i, value: str[i++] });\n };\n if (char === \"*\") {\n tokens.push({ type: \"ASTERISK\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"+\" || char === \"?\") {\n tokens.push({ type: \"OTHER_MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n let name = \"\";\n let j = i + 1;\n while (j < str.length) {\n const code = str.substr(j, 1);\n if (j === i + 1 && regexIdentifierStart.test(code) || j !== i + 1 && regexIdentifierPart.test(code)) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name) {\n ErrorOrInvalid(`Missing parameter name at ${i}`);\n continue;\n }\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n let count = 1;\n let pattern = \"\";\n let j = i + 1;\n let error = false;\n if (str[j] === \"?\") {\n ErrorOrInvalid(`Pattern cannot start with \"?\" at ${j}`);\n continue;\n }\n while (j < str.length) {\n if (!isASCII(str[j], false)) {\n ErrorOrInvalid(`Invalid character '${str[j]}' at ${j}.`);\n error = true;\n break;\n }\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n } else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n ErrorOrInvalid(`Capturing groups are not allowed at ${j}`);\n error = true;\n break;\n }\n }\n pattern += str[j++];\n }\n if (error) {\n continue;\n }\n if (count) {\n ErrorOrInvalid(`Unbalanced pattern at ${i}`);\n continue;\n }\n if (!pattern) {\n ErrorOrInvalid(`Missing pattern at ${i}`);\n continue;\n }\n tokens.push({ type: \"REGEX\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\nfunction parse(str, options = {}) {\n const tokens = lexer(str);\n options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n const segmentWildcardRegex = `[^${escapeString(options.delimiter)}]+?`;\n const result = [];\n let key = 0;\n let i = 0;\n let path = \"\";\n let nameSet = /* @__PURE__ */ new Set();\n const tryConsume = (type) => {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n const tryConsumeModifier = () => {\n return tryConsume(\"OTHER_MODIFIER\") ?? tryConsume(\"ASTERISK\");\n };\n const mustConsume = (type) => {\n const value = tryConsume(type);\n if (value !== void 0)\n return value;\n const { type: nextType, index } = tokens[i];\n throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}`);\n };\n const consumeText = () => {\n let result2 = \"\";\n let value;\n while (value = tryConsume(\"CHAR\") ?? tryConsume(\"ESCAPED_CHAR\")) {\n result2 += value;\n }\n return result2;\n };\n const DefaultEncodePart = (value) => {\n return value;\n };\n const encodePart = options.encodePart || DefaultEncodePart;\n let pendingFixedValue = \"\";\n const appendToPendingFixedValue = (value) => {\n pendingFixedValue += value;\n };\n const maybeAddPartFromPendingFixedValue = () => {\n if (!pendingFixedValue.length) {\n return;\n }\n result.push(new Part(3 /* kFixed */, \"\", \"\", encodePart(pendingFixedValue), \"\", 3 /* kNone */));\n pendingFixedValue = \"\";\n };\n const addPart = (prefix, nameToken, regexOrWildcardToken, suffix, modifierToken) => {\n let modifier = 3 /* kNone */;\n switch (modifierToken) {\n case \"?\":\n modifier = 1 /* kOptional */;\n break;\n case \"*\":\n modifier = 0 /* kZeroOrMore */;\n break;\n case \"+\":\n modifier = 2 /* kOneOrMore */;\n break;\n }\n if (!nameToken && !regexOrWildcardToken && modifier === 3 /* kNone */) {\n appendToPendingFixedValue(prefix);\n return;\n }\n maybeAddPartFromPendingFixedValue();\n if (!nameToken && !regexOrWildcardToken) {\n if (!prefix) {\n return;\n }\n result.push(new Part(3 /* kFixed */, \"\", \"\", encodePart(prefix), \"\", modifier));\n return;\n }\n let regexValue;\n if (!regexOrWildcardToken) {\n regexValue = segmentWildcardRegex;\n } else if (regexOrWildcardToken === \"*\") {\n regexValue = kFullWildcardRegex;\n } else {\n regexValue = regexOrWildcardToken;\n }\n let type = 2 /* kRegex */;\n if (regexValue === segmentWildcardRegex) {\n type = 1 /* kSegmentWildcard */;\n regexValue = \"\";\n } else if (regexValue === kFullWildcardRegex) {\n type = 0 /* kFullWildcard */;\n regexValue = \"\";\n }\n let name;\n if (nameToken) {\n name = nameToken;\n } else if (regexOrWildcardToken) {\n name = key++;\n }\n if (nameSet.has(name)) {\n throw new TypeError(`Duplicate name '${name}'.`);\n }\n nameSet.add(name);\n result.push(new Part(type, name, encodePart(prefix), regexValue, encodePart(suffix), modifier));\n };\n while (i < tokens.length) {\n const charToken = tryConsume(\"CHAR\");\n const nameToken = tryConsume(\"NAME\");\n let regexOrWildcardToken = tryConsume(\"REGEX\");\n if (!nameToken && !regexOrWildcardToken) {\n regexOrWildcardToken = tryConsume(\"ASTERISK\");\n }\n if (nameToken || regexOrWildcardToken) {\n let prefix = charToken ?? \"\";\n if (options.prefixes.indexOf(prefix) === -1) {\n appendToPendingFixedValue(prefix);\n prefix = \"\";\n }\n maybeAddPartFromPendingFixedValue();\n let modifierToken = tryConsumeModifier();\n addPart(prefix, nameToken, regexOrWildcardToken, \"\", modifierToken);\n continue;\n }\n const value = charToken ?? tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n appendToPendingFixedValue(value);\n continue;\n }\n const openToken = tryConsume(\"OPEN\");\n if (openToken) {\n const prefix = consumeText();\n const nameToken2 = tryConsume(\"NAME\");\n let regexOrWildcardToken2 = tryConsume(\"REGEX\");\n if (!nameToken2 && !regexOrWildcardToken2) {\n regexOrWildcardToken2 = tryConsume(\"ASTERISK\");\n }\n const suffix = consumeText();\n mustConsume(\"CLOSE\");\n const modifierToken = tryConsumeModifier();\n addPart(prefix, nameToken2, regexOrWildcardToken2, suffix, modifierToken);\n continue;\n }\n maybeAddPartFromPendingFixedValue();\n mustConsume(\"END\");\n }\n return result;\n}\nfunction escapeString(str) {\n return str.replace(/([.+*?^${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\nfunction flags(options) {\n return options && options.ignoreCase ? \"ui\" : \"u\";\n}\nfunction stringToRegexp(path, names, options) {\n return partsToRegexp(parse(path, options), names, options);\n}\nfunction modifierToString(modifier) {\n switch (modifier) {\n case 0 /* kZeroOrMore */:\n return \"*\";\n case 1 /* kOptional */:\n return \"?\";\n case 2 /* kOneOrMore */:\n return \"+\";\n case 3 /* kNone */:\n return \"\";\n }\n}\nfunction partsToRegexp(parts, names, options = {}) {\n options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n options.sensitive ?? (options.sensitive = false);\n options.strict ?? (options.strict = false);\n options.end ?? (options.end = true);\n options.start ?? (options.start = true);\n options.endsWith = \"\";\n let result = options.start ? \"^\" : \"\";\n for (const part of parts) {\n if (part.type === 3 /* kFixed */) {\n if (part.modifier === 3 /* kNone */) {\n result += escapeString(part.value);\n } else {\n result += `(?:${escapeString(part.value)})${modifierToString(part.modifier)}`;\n }\n continue;\n }\n if (names)\n names.push(part.name);\n const segmentWildcardRegex = `[^${escapeString(options.delimiter)}]+?`;\n let regexValue = part.value;\n if (part.type === 1 /* kSegmentWildcard */)\n regexValue = segmentWildcardRegex;\n else if (part.type === 0 /* kFullWildcard */)\n regexValue = kFullWildcardRegex;\n if (!part.prefix.length && !part.suffix.length) {\n if (part.modifier === 3 /* kNone */ || part.modifier === 1 /* kOptional */) {\n result += `(${regexValue})${modifierToString(part.modifier)}`;\n } else {\n result += `((?:${regexValue})${modifierToString(part.modifier)})`;\n }\n continue;\n }\n if (part.modifier === 3 /* kNone */ || part.modifier === 1 /* kOptional */) {\n result += `(?:${escapeString(part.prefix)}(${regexValue})${escapeString(part.suffix)})`;\n result += modifierToString(part.modifier);\n continue;\n }\n result += `(?:${escapeString(part.prefix)}`;\n result += `((?:${regexValue})(?:`;\n result += escapeString(part.suffix);\n result += escapeString(part.prefix);\n result += `(?:${regexValue}))*)${escapeString(part.suffix)})`;\n if (part.modifier === 0 /* kZeroOrMore */) {\n result += \"?\";\n }\n }\n const endsWith = `[${escapeString(options.endsWith)}]|$`;\n const delimiter = `[${escapeString(options.delimiter)}]`;\n if (options.end) {\n if (!options.strict) {\n result += `${delimiter}?`;\n }\n if (!options.endsWith.length) {\n result += \"$\";\n } else {\n result += `(?=${endsWith})`;\n }\n return new RegExp(result, flags(options));\n }\n if (!options.strict) {\n result += `(?:${delimiter}(?=${endsWith}))?`;\n }\n let isEndDelimited = false;\n if (parts.length) {\n const lastPart = parts[parts.length - 1];\n if (lastPart.type === 3 /* kFixed */ && lastPart.modifier === 3 /* kNone */) {\n isEndDelimited = options.delimiter.indexOf(lastPart) > -1;\n }\n }\n if (!isEndDelimited) {\n result += `(?=${delimiter}|${endsWith})`;\n }\n return new RegExp(result, flags(options));\n}\n\n// src/url-utils.ts\nvar DEFAULT_OPTIONS = {\n delimiter: \"\",\n prefixes: \"\",\n sensitive: true,\n strict: true\n};\nvar HOSTNAME_OPTIONS = {\n delimiter: \".\",\n prefixes: \"\",\n sensitive: true,\n strict: true\n};\nvar PATHNAME_OPTIONS = {\n delimiter: \"/\",\n prefixes: \"/\",\n sensitive: true,\n strict: true\n};\nfunction isAbsolutePathname(pathname, isPattern) {\n if (!pathname.length) {\n return false;\n }\n if (pathname[0] === \"/\") {\n return true;\n }\n if (!isPattern) {\n return false;\n }\n if (pathname.length < 2) {\n return false;\n }\n if ((pathname[0] == \"\\\\\" || pathname[0] == \"{\") && pathname[1] == \"/\") {\n return true;\n }\n return false;\n}\nfunction maybeStripPrefix(value, prefix) {\n if (value.startsWith(prefix)) {\n return value.substring(prefix.length, value.length);\n }\n return value;\n}\nfunction maybeStripSuffix(value, suffix) {\n if (value.endsWith(suffix)) {\n return value.substr(0, value.length - suffix.length);\n }\n return value;\n}\nfunction treatAsIPv6Hostname(value) {\n if (!value || value.length < 2) {\n return false;\n }\n if (value[0] === \"[\") {\n return true;\n }\n if ((value[0] === \"\\\\\" || value[0] === \"{\") && value[1] === \"[\") {\n return true;\n }\n return false;\n}\nvar SPECIAL_SCHEMES = [\n \"ftp\",\n \"file\",\n \"http\",\n \"https\",\n \"ws\",\n \"wss\"\n];\nfunction isSpecialScheme(protocol_regexp) {\n if (!protocol_regexp) {\n return true;\n }\n for (const scheme of SPECIAL_SCHEMES) {\n if (protocol_regexp.test(scheme)) {\n return true;\n }\n }\n return false;\n}\nfunction canonicalizeHash(hash, isPattern) {\n hash = maybeStripPrefix(hash, \"#\");\n if (isPattern || hash === \"\") {\n return hash;\n }\n const url = new URL(\"https://example.com\");\n url.hash = hash;\n return url.hash ? url.hash.substring(1, url.hash.length) : \"\";\n}\nfunction canonicalizeSearch(search, isPattern) {\n search = maybeStripPrefix(search, \"?\");\n if (isPattern || search === \"\") {\n return search;\n }\n const url = new URL(\"https://example.com\");\n url.search = search;\n return url.search ? url.search.substring(1, url.search.length) : \"\";\n}\nfunction canonicalizeHostname(hostname, isPattern) {\n if (isPattern || hostname === \"\") {\n return hostname;\n }\n if (treatAsIPv6Hostname(hostname)) {\n return ipv6HostnameEncodeCallback(hostname);\n } else {\n return hostnameEncodeCallback(hostname);\n }\n}\nfunction canonicalizePassword(password, isPattern) {\n if (isPattern || password === \"\") {\n return password;\n }\n const url = new URL(\"https://example.com\");\n url.password = password;\n return url.password;\n}\nfunction canonicalizeUsername(username, isPattern) {\n if (isPattern || username === \"\") {\n return username;\n }\n const url = new URL(\"https://example.com\");\n url.username = username;\n return url.username;\n}\nfunction canonicalizePathname(pathname, protocol, isPattern) {\n if (isPattern || pathname === \"\") {\n return pathname;\n }\n if (protocol && !SPECIAL_SCHEMES.includes(protocol)) {\n const url = new URL(`${protocol}:${pathname}`);\n return url.pathname;\n }\n const leadingSlash = pathname[0] == \"/\";\n pathname = new URL(\n !leadingSlash ? \"/-\" + pathname : pathname,\n \"https://example.com\"\n ).pathname;\n if (!leadingSlash) {\n pathname = pathname.substring(2, pathname.length);\n }\n return pathname;\n}\nfunction canonicalizePort(port, protocol, isPattern) {\n if (defaultPortForProtocol(protocol) === port) {\n port = \"\";\n }\n if (isPattern || port === \"\") {\n return port;\n }\n return portEncodeCallback(port);\n}\nfunction canonicalizeProtocol(protocol, isPattern) {\n protocol = maybeStripSuffix(protocol, \":\");\n if (isPattern || protocol === \"\") {\n return protocol;\n }\n return protocolEncodeCallback(protocol);\n}\nfunction defaultPortForProtocol(protocol) {\n switch (protocol) {\n case \"ws\":\n case \"http\":\n return \"80\";\n case \"wws\":\n case \"https\":\n return \"443\";\n case \"ftp\":\n return \"21\";\n default:\n return \"\";\n }\n}\nfunction protocolEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/^[-+.A-Za-z0-9]*$/.test(input))\n return input.toLowerCase();\n throw new TypeError(`Invalid protocol '${input}'.`);\n}\nfunction usernameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.username = input;\n return url.username;\n}\nfunction passwordEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.password = input;\n return url.password;\n}\nfunction hostnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/[\\t\\n\\r #%/:<>?@[\\]^\\\\|]/g.test(input)) {\n throw new TypeError(`Invalid hostname '${input}'`);\n }\n const url = new URL(\"https://example.com\");\n url.hostname = input;\n return url.hostname;\n}\nfunction ipv6HostnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/[^0-9a-fA-F[\\]:]/g.test(input)) {\n throw new TypeError(`Invalid IPv6 hostname '${input}'`);\n }\n return input.toLowerCase();\n}\nfunction portEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/^[0-9]*$/.test(input) && parseInt(input) <= 65535) {\n return input;\n }\n throw new TypeError(`Invalid port '${input}'.`);\n}\nfunction standardURLPathnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.pathname = input[0] !== \"/\" ? \"/-\" + input : input;\n if (input[0] !== \"/\") {\n return url.pathname.substring(2, url.pathname.length);\n }\n return url.pathname;\n}\nfunction pathURLPathnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(`data:${input}`);\n return url.pathname;\n}\nfunction searchEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.search = input;\n return url.search.substring(1, url.search.length);\n}\nfunction hashEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.hash = input;\n return url.hash.substring(1, url.hash.length);\n}\n\n// src/url-pattern-parser.ts\nvar Parser = class {\n constructor(input) {\n // The list of `LexToken`s produced by the path-to-regexp `lexer()` function\n // when passed `input` with lenient mode enabled.\n this.tokenList = [];\n // As we parse the input string we populate a `URLPatternInit` dictionary\n // with each component pattern. This is then the final result of the parse.\n this.internalResult = {};\n // The index of the current `LexToken` being considered.\n this.tokenIndex = 0;\n // The value to add to `tokenIndex` on each turn through the parse loop.\n // While typically this is `1`, it is also set to `0` at times for things\n // like state transitions, etc. It is automatically reset back to `1` at\n // the top of the parse loop.\n this.tokenIncrement = 1;\n // The index of the first `LexToken` to include in the component string.\n this.componentStart = 0;\n // The current parse state. This should only be changed via `changeState()`\n // or `rewindAndSetState()`.\n this.state = 0 /* INIT */;\n // The current nest depth of `{ }` pattern groupings.\n this.groupDepth = 0;\n // The current nesting depth of `[ ]` in hostname patterns.\n this.hostnameIPv6BracketDepth = 0;\n // True if we should apply parse rules as if this is a \"standard\" URL. If\n // false then this is treated as a \"not a base URL\".\n this.shouldTreatAsStandardURL = false;\n this.input = input;\n }\n // Return the parse result. The result is only available after the\n // `parse()` method completes.\n get result() {\n return this.internalResult;\n }\n // Attempt to parse the input string used to construct the Parser object.\n // This method may only be called once. Any errors will be thrown as an\n // exception. Retrieve the parse result by accessing the `Parser.result`\n // property getter.\n parse() {\n this.tokenList = lexer(\n this.input,\n /*lenient=*/\n true\n );\n for (; this.tokenIndex < this.tokenList.length; this.tokenIndex += this.tokenIncrement) {\n this.tokenIncrement = 1;\n if (this.tokenList[this.tokenIndex].type === \"END\") {\n if (this.state === 0 /* INIT */) {\n this.rewind();\n if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n this.internalResult.hash = \"\";\n } else {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\n this.internalResult.search = \"\";\n this.internalResult.hash = \"\";\n }\n continue;\n } else if (this.state === 2 /* AUTHORITY */) {\n this.rewindAndSetState(5 /* HOSTNAME */);\n continue;\n }\n this.changeState(\n 10 /* DONE */,\n /*skip=*/\n 0\n );\n break;\n }\n if (this.groupDepth > 0) {\n if (this.isGroupClose()) {\n this.groupDepth -= 1;\n } else {\n continue;\n }\n }\n if (this.isGroupOpen()) {\n this.groupDepth += 1;\n continue;\n }\n switch (this.state) {\n case 0 /* INIT */:\n if (this.isProtocolSuffix()) {\n this.internalResult.username = \"\";\n this.internalResult.password = \"\";\n this.internalResult.hostname = \"\";\n this.internalResult.port = \"\";\n this.internalResult.pathname = \"\";\n this.internalResult.search = \"\";\n this.internalResult.hash = \"\";\n this.rewindAndSetState(1 /* PROTOCOL */);\n }\n break;\n case 1 /* PROTOCOL */:\n if (this.isProtocolSuffix()) {\n this.computeShouldTreatAsStandardURL();\n let nextState = 7 /* PATHNAME */;\n let skip = 1;\n if (this.shouldTreatAsStandardURL) {\n this.internalResult.pathname = \"/\";\n }\n if (this.nextIsAuthoritySlashes()) {\n nextState = 2 /* AUTHORITY */;\n skip = 3;\n } else if (this.shouldTreatAsStandardURL) {\n nextState = 2 /* AUTHORITY */;\n }\n this.changeState(nextState, skip);\n }\n break;\n case 2 /* AUTHORITY */:\n if (this.isIdentityTerminator()) {\n this.rewindAndSetState(3 /* USERNAME */);\n } else if (this.isPathnameStart() || this.isSearchPrefix() || this.isHashPrefix()) {\n this.rewindAndSetState(5 /* HOSTNAME */);\n }\n break;\n case 3 /* USERNAME */:\n if (this.isPasswordPrefix()) {\n this.changeState(\n 4 /* PASSWORD */,\n /*skip=*/\n 1\n );\n } else if (this.isIdentityTerminator()) {\n this.changeState(\n 5 /* HOSTNAME */,\n /*skip=*/\n 1\n );\n }\n break;\n case 4 /* PASSWORD */:\n if (this.isIdentityTerminator()) {\n this.changeState(\n 5 /* HOSTNAME */,\n /*skip=*/\n 1\n );\n }\n break;\n case 5 /* HOSTNAME */:\n if (this.isIPv6Open()) {\n this.hostnameIPv6BracketDepth += 1;\n } else if (this.isIPv6Close()) {\n this.hostnameIPv6BracketDepth -= 1;\n }\n if (this.isPortPrefix() && !this.hostnameIPv6BracketDepth) {\n this.changeState(\n 6 /* PORT */,\n /*skip=*/\n 1\n );\n } else if (this.isPathnameStart()) {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 6 /* PORT */:\n if (this.isPathnameStart()) {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 7 /* PATHNAME */:\n if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 8 /* SEARCH */:\n if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 9 /* HASH */:\n break;\n case 10 /* DONE */:\n break;\n }\n }\n }\n changeState(newState, skip) {\n switch (this.state) {\n case 0 /* INIT */:\n break;\n case 1 /* PROTOCOL */:\n this.internalResult.protocol = this.makeComponentString();\n break;\n case 2 /* AUTHORITY */:\n break;\n case 3 /* USERNAME */:\n this.internalResult.username = this.makeComponentString();\n break;\n case 4 /* PASSWORD */:\n this.internalResult.password = this.makeComponentString();\n break;\n case 5 /* HOSTNAME */:\n this.internalResult.hostname = this.makeComponentString();\n break;\n case 6 /* PORT */:\n this.internalResult.port = this.makeComponentString();\n break;\n case 7 /* PATHNAME */:\n this.internalResult.pathname = this.makeComponentString();\n break;\n case 8 /* SEARCH */:\n this.internalResult.search = this.makeComponentString();\n break;\n case 9 /* HASH */:\n this.internalResult.hash = this.makeComponentString();\n break;\n case 10 /* DONE */:\n break;\n }\n this.changeStateWithoutSettingComponent(newState, skip);\n }\n changeStateWithoutSettingComponent(newState, skip) {\n this.state = newState;\n this.componentStart = this.tokenIndex + skip;\n this.tokenIndex += skip;\n this.tokenIncrement = 0;\n }\n rewind() {\n this.tokenIndex = this.componentStart;\n this.tokenIncrement = 0;\n }\n rewindAndSetState(newState) {\n this.rewind();\n this.state = newState;\n }\n safeToken(index) {\n if (index < 0) {\n index = this.tokenList.length - index;\n }\n if (index < this.tokenList.length) {\n return this.tokenList[index];\n }\n return this.tokenList[this.tokenList.length - 1];\n }\n isNonSpecialPatternChar(index, value) {\n const token = this.safeToken(index);\n return token.value === value && (token.type === \"CHAR\" || token.type === \"ESCAPED_CHAR\" || token.type === \"INVALID_CHAR\");\n }\n isProtocolSuffix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n nextIsAuthoritySlashes() {\n return this.isNonSpecialPatternChar(this.tokenIndex + 1, \"/\") && this.isNonSpecialPatternChar(this.tokenIndex + 2, \"/\");\n }\n isIdentityTerminator() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"@\");\n }\n isPasswordPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n isPortPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n isPathnameStart() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"/\");\n }\n isSearchPrefix() {\n if (this.isNonSpecialPatternChar(this.tokenIndex, \"?\")) {\n return true;\n }\n if (this.tokenList[this.tokenIndex].value !== \"?\") {\n return false;\n }\n const previousToken = this.safeToken(this.tokenIndex - 1);\n return previousToken.type !== \"NAME\" && previousToken.type !== \"REGEX\" && previousToken.type !== \"CLOSE\" && previousToken.type !== \"ASTERISK\";\n }\n isHashPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"#\");\n }\n isGroupOpen() {\n return this.tokenList[this.tokenIndex].type == \"OPEN\";\n }\n isGroupClose() {\n return this.tokenList[this.tokenIndex].type == \"CLOSE\";\n }\n isIPv6Open() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"[\");\n }\n isIPv6Close() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"]\");\n }\n makeComponentString() {\n const token = this.tokenList[this.tokenIndex];\n const componentCharStart = this.safeToken(this.componentStart).index;\n return this.input.substring(componentCharStart, token.index);\n }\n computeShouldTreatAsStandardURL() {\n const options = {};\n Object.assign(options, DEFAULT_OPTIONS);\n options.encodePart = protocolEncodeCallback;\n const regexp = stringToRegexp(\n this.makeComponentString(),\n /*keys=*/\n void 0,\n options\n );\n this.shouldTreatAsStandardURL = isSpecialScheme(regexp);\n }\n};\n\n// src/url-pattern.ts\nvar COMPONENTS = [\n \"protocol\",\n \"username\",\n \"password\",\n \"hostname\",\n \"port\",\n \"pathname\",\n \"search\",\n \"hash\"\n];\nvar DEFAULT_PATTERN = \"*\";\nfunction extractValues(url, baseURL) {\n if (typeof url !== \"string\") {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n const o = new URL(url, baseURL);\n return {\n protocol: o.protocol.substring(0, o.protocol.length - 1),\n username: o.username,\n password: o.password,\n hostname: o.hostname,\n port: o.port,\n pathname: o.pathname,\n search: o.search !== \"\" ? o.search.substring(1, o.search.length) : void 0,\n hash: o.hash !== \"\" ? o.hash.substring(1, o.hash.length) : void 0\n };\n}\nfunction processBaseURLString(input, isPattern) {\n if (!isPattern) {\n return input;\n }\n return escapePatternString(input);\n}\nfunction applyInit(o, init, isPattern) {\n let baseURL;\n if (typeof init.baseURL === \"string\") {\n try {\n baseURL = new URL(init.baseURL);\n o.protocol = processBaseURLString(baseURL.protocol.substring(0, baseURL.protocol.length - 1), isPattern);\n o.username = processBaseURLString(baseURL.username, isPattern);\n o.password = processBaseURLString(baseURL.password, isPattern);\n o.hostname = processBaseURLString(baseURL.hostname, isPattern);\n o.port = processBaseURLString(baseURL.port, isPattern);\n o.pathname = processBaseURLString(baseURL.pathname, isPattern);\n o.search = processBaseURLString(baseURL.search.substring(1, baseURL.search.length), isPattern);\n o.hash = processBaseURLString(baseURL.hash.substring(1, baseURL.hash.length), isPattern);\n } catch {\n throw new TypeError(`invalid baseURL '${init.baseURL}'.`);\n }\n }\n if (typeof init.protocol === \"string\") {\n o.protocol = canonicalizeProtocol(init.protocol, isPattern);\n }\n if (typeof init.username === \"string\") {\n o.username = canonicalizeUsername(init.username, isPattern);\n }\n if (typeof init.password === \"string\") {\n o.password = canonicalizePassword(init.password, isPattern);\n }\n if (typeof init.hostname === \"string\") {\n o.hostname = canonicalizeHostname(init.hostname, isPattern);\n }\n if (typeof init.port === \"string\") {\n o.port = canonicalizePort(init.port, o.protocol, isPattern);\n }\n if (typeof init.pathname === \"string\") {\n o.pathname = init.pathname;\n if (baseURL && !isAbsolutePathname(o.pathname, isPattern)) {\n const slashIndex = baseURL.pathname.lastIndexOf(\"/\");\n if (slashIndex >= 0) {\n o.pathname = processBaseURLString(baseURL.pathname.substring(0, slashIndex + 1), isPattern) + o.pathname;\n }\n }\n o.pathname = canonicalizePathname(o.pathname, o.protocol, isPattern);\n }\n if (typeof init.search === \"string\") {\n o.search = canonicalizeSearch(init.search, isPattern);\n }\n if (typeof init.hash === \"string\") {\n o.hash = canonicalizeHash(init.hash, isPattern);\n }\n return o;\n}\nfunction escapePatternString(value) {\n return value.replace(/([+*?:{}()\\\\])/g, \"\\\\$1\");\n}\nfunction escapeRegexpString(value) {\n return value.replace(/([.+*?^${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\nfunction partsToPattern(parts, options) {\n options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n options.sensitive ?? (options.sensitive = false);\n options.strict ?? (options.strict = false);\n options.end ?? (options.end = true);\n options.start ?? (options.start = true);\n options.endsWith = \"\";\n const kFullWildcardRegex2 = \".*\";\n const segmentWildcardRegex = `[^${escapeRegexpString(options.delimiter)}]+?`;\n const regexIdentifierPart2 = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\n let result = \"\";\n for (let i = 0; i < parts.length; ++i) {\n const part = parts[i];\n if (part.type === 3 /* kFixed */) {\n if (part.modifier === 3 /* kNone */) {\n result += escapePatternString(part.value);\n continue;\n }\n result += `{${escapePatternString(part.value)}}${modifierToString(part.modifier)}`;\n continue;\n }\n const customName = part.hasCustomName();\n let needsGrouping = !!part.suffix.length || !!part.prefix.length && (part.prefix.length !== 1 || !options.prefixes.includes(part.prefix));\n const lastPart = i > 0 ? parts[i - 1] : null;\n const nextPart = i < parts.length - 1 ? parts[i + 1] : null;\n if (!needsGrouping && customName && part.type === 1 /* kSegmentWildcard */ && part.modifier === 3 /* kNone */ && nextPart && !nextPart.prefix.length && !nextPart.suffix.length) {\n if (nextPart.type === 3 /* kFixed */) {\n const code = nextPart.value.length > 0 ? nextPart.value[0] : \"\";\n needsGrouping = regexIdentifierPart2.test(code);\n } else {\n needsGrouping = !nextPart.hasCustomName();\n }\n }\n if (!needsGrouping && !part.prefix.length && lastPart && lastPart.type === 3 /* kFixed */) {\n const code = lastPart.value[lastPart.value.length - 1];\n needsGrouping = options.prefixes.includes(code);\n }\n if (needsGrouping) {\n result += \"{\";\n }\n result += escapePatternString(part.prefix);\n if (customName) {\n result += `:${part.name}`;\n }\n if (part.type === 2 /* kRegex */) {\n result += `(${part.value})`;\n } else if (part.type === 1 /* kSegmentWildcard */) {\n if (!customName) {\n result += `(${segmentWildcardRegex})`;\n }\n } else if (part.type === 0 /* kFullWildcard */) {\n if (!customName && (!lastPart || lastPart.type === 3 /* kFixed */ || lastPart.modifier !== 3 /* kNone */ || needsGrouping || part.prefix !== \"\")) {\n result += \"*\";\n } else {\n result += `(${kFullWildcardRegex2})`;\n }\n }\n if (part.type === 1 /* kSegmentWildcard */ && customName && !!part.suffix.length) {\n if (regexIdentifierPart2.test(part.suffix[0])) {\n result += \"\\\\\";\n }\n }\n result += escapePatternString(part.suffix);\n if (needsGrouping) {\n result += \"}\";\n }\n if (part.modifier !== 3 /* kNone */) {\n result += modifierToString(part.modifier);\n }\n }\n return result;\n}\nvar URLPattern = class {\n constructor(init = {}, baseURLOrOptions, options) {\n this.regexp = {};\n this.names = {};\n this.component_pattern = {};\n this.parts = {};\n try {\n let baseURL = void 0;\n if (typeof baseURLOrOptions === \"string\") {\n baseURL = baseURLOrOptions;\n } else {\n options = baseURLOrOptions;\n }\n if (typeof init === \"string\") {\n const parser = new Parser(init);\n parser.parse();\n init = parser.result;\n if (baseURL === void 0 && typeof init.protocol !== \"string\") {\n throw new TypeError(`A base URL must be provided for a relative constructor string.`);\n }\n init.baseURL = baseURL;\n } else {\n if (!init || typeof init !== \"object\") {\n throw new TypeError(`parameter 1 is not of type 'string' and cannot convert to dictionary.`);\n }\n if (baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n }\n if (typeof options === \"undefined\") {\n options = { ignoreCase: false };\n }\n const ignoreCaseOptions = { ignoreCase: options.ignoreCase === true };\n const defaults = {\n pathname: DEFAULT_PATTERN,\n protocol: DEFAULT_PATTERN,\n username: DEFAULT_PATTERN,\n password: DEFAULT_PATTERN,\n hostname: DEFAULT_PATTERN,\n port: DEFAULT_PATTERN,\n search: DEFAULT_PATTERN,\n hash: DEFAULT_PATTERN\n };\n this.pattern = applyInit(defaults, init, true);\n if (defaultPortForProtocol(this.pattern.protocol) === this.pattern.port) {\n this.pattern.port = \"\";\n }\n let component;\n for (component of COMPONENTS) {\n if (!(component in this.pattern))\n continue;\n const options2 = {};\n const pattern = this.pattern[component];\n this.names[component] = [];\n switch (component) {\n case \"protocol\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = protocolEncodeCallback;\n break;\n case \"username\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = usernameEncodeCallback;\n break;\n case \"password\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = passwordEncodeCallback;\n break;\n case \"hostname\":\n Object.assign(options2, HOSTNAME_OPTIONS);\n if (treatAsIPv6Hostname(pattern)) {\n options2.encodePart = ipv6HostnameEncodeCallback;\n } else {\n options2.encodePart = hostnameEncodeCallback;\n }\n break;\n case \"port\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = portEncodeCallback;\n break;\n case \"pathname\":\n if (isSpecialScheme(this.regexp.protocol)) {\n Object.assign(options2, PATHNAME_OPTIONS, ignoreCaseOptions);\n options2.encodePart = standardURLPathnameEncodeCallback;\n } else {\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = pathURLPathnameEncodeCallback;\n }\n break;\n case \"search\":\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = searchEncodeCallback;\n break;\n case \"hash\":\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = hashEncodeCallback;\n break;\n }\n try {\n this.parts[component] = parse(pattern, options2);\n this.regexp[component] = partsToRegexp(\n this.parts[component],\n /* out */\n this.names[component],\n options2\n );\n this.component_pattern[component] = partsToPattern(this.parts[component], options2);\n } catch (err) {\n throw new TypeError(`invalid ${component} pattern '${this.pattern[component]}'.`);\n }\n }\n } catch (err) {\n throw new TypeError(`Failed to construct 'URLPattern': ${err.message}`);\n }\n }\n test(input = {}, baseURL) {\n let values = {\n pathname: \"\",\n protocol: \"\",\n username: \"\",\n password: \"\",\n hostname: \"\",\n port: \"\",\n search: \"\",\n hash: \"\"\n };\n if (typeof input !== \"string\" && baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n if (typeof input === \"undefined\") {\n return false;\n }\n try {\n if (typeof input === \"object\") {\n values = applyInit(values, input, false);\n } else {\n values = applyInit(values, extractValues(input, baseURL), false);\n }\n } catch (err) {\n return false;\n }\n let component;\n for (component of COMPONENTS) {\n if (!this.regexp[component].exec(values[component])) {\n return false;\n }\n }\n return true;\n }\n exec(input = {}, baseURL) {\n let values = {\n pathname: \"\",\n protocol: \"\",\n username: \"\",\n password: \"\",\n hostname: \"\",\n port: \"\",\n search: \"\",\n hash: \"\"\n };\n if (typeof input !== \"string\" && baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n if (typeof input === \"undefined\") {\n return;\n }\n try {\n if (typeof input === \"object\") {\n values = applyInit(values, input, false);\n } else {\n values = applyInit(values, extractValues(input, baseURL), false);\n }\n } catch (err) {\n return null;\n }\n let result = {};\n if (baseURL) {\n result.inputs = [input, baseURL];\n } else {\n result.inputs = [input];\n }\n let component;\n for (component of COMPONENTS) {\n let match = this.regexp[component].exec(values[component]);\n if (!match) {\n return null;\n }\n let groups = {};\n for (let [i, name] of this.names[component].entries()) {\n if (typeof name === \"string\" || typeof name === \"number\") {\n let value = match[i + 1];\n groups[name] = value;\n }\n }\n result[component] = {\n input: values[component] ?? \"\",\n groups\n };\n }\n return result;\n }\n static compareComponent(component, left, right) {\n const comparePart = (left2, right2) => {\n for (let attr of [\"type\", \"modifier\", \"prefix\", \"value\", \"suffix\"]) {\n if (left2[attr] < right2[attr])\n return -1;\n else if (left2[attr] === right2[attr])\n continue;\n else\n return 1;\n }\n return 0;\n };\n const emptyFixedPart = new Part(3 /* kFixed */, \"\", \"\", \"\", \"\", 3 /* kNone */);\n const wildcardOnlyPart = new Part(0 /* kFullWildcard */, \"\", \"\", \"\", \"\", 3 /* kNone */);\n const comparePartList = (left2, right2) => {\n let i = 0;\n for (; i < Math.min(left2.length, right2.length); ++i) {\n let result = comparePart(left2[i], right2[i]);\n if (result)\n return result;\n }\n if (left2.length === right2.length) {\n return 0;\n }\n return comparePart(left2[i] ?? emptyFixedPart, right2[i] ?? emptyFixedPart);\n };\n if (!left.component_pattern[component] && !right.component_pattern[component]) {\n return 0;\n }\n if (left.component_pattern[component] && !right.component_pattern[component]) {\n return comparePartList(left.parts[component], [wildcardOnlyPart]);\n }\n if (!left.component_pattern[component] && right.component_pattern[component]) {\n return comparePartList([wildcardOnlyPart], right.parts[component]);\n }\n return comparePartList(left.parts[component], right.parts[component]);\n }\n get protocol() {\n return this.component_pattern.protocol;\n }\n get username() {\n return this.component_pattern.username;\n }\n get password() {\n return this.component_pattern.password;\n }\n get hostname() {\n return this.component_pattern.hostname;\n }\n get port() {\n return this.component_pattern.port;\n }\n get pathname() {\n return this.component_pattern.pathname;\n }\n get search() {\n return this.component_pattern.search;\n }\n get hash() {\n return this.component_pattern.hash;\n }\n};\nexport {\n URLPattern\n};\n","import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n",":host {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttext-align: center;\n\tcursor: pointer;\n}\n\n:host > div {\n\toverflow-y: auto;\n\theight: 100%;\n}\n\n:not(:host[label], :host[icon]),\n:host[disabled] {\n\tdisplay: none;\n}\n\n:host>div {\n\tdisplay: none;\n}\n\n:host>li {\n\theight: 100%;\n\tlist-style: none;\n}\n\n:host>li>a {\n\tpadding: 0 1.5em;\n\theight: 100%;\n}\n\n:host[selected]>li>a {\n\tdisplay: flex;\n\tcolor: rgb(var(--smoothly-color-contrast));\n\tbackground: rgb(var(--smoothly-color-shade));\n}\n\n:host:hover>li>a {\n\tcolor: rgb(var(--smoothly-color-contrast));\n\tbackground-color: rgb(var(--smoothly-color-tint));\n\ttransition: 0.2s;\n}\n\n:host>li>a>smoothly-icon {\n\talign-self: inherit;\n\tmargin-bottom: 1em;\n}\n\n@media screen and (max-width: 900px) {\n\t:host>li>a {\n\t\tpadding: 0;\n\t}\n\n\t:host>li>a {\n\t\tmargin-left: -1.5rem;\n\t\tmargin-right: -1.5rem;\n\t\tpadding-left: 1.5rem;\n\t\tpadding-right: 1.5rem;\n\t}\n}\n","import { Component, Event, EventEmitter, FunctionalComponent, h, Host, Method, Prop, VNode } from \"@stencil/core\"\nimport \"urlpattern-polyfill\"\nimport { Icon } from \"../../../model\"\n\n@Component({\n\ttag: \"smoothly-app-room\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyAppRoom {\n\t@Prop({ reflect: true }) label?: string\n\t@Prop({ reflect: true }) icon?: Icon\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Prop() path: string | URLPattern = \"\"\n\t@Prop() to?: string\n\t@Prop({ reflect: true, mutable: true }) selected?: boolean\n\t@Prop() content?: VNode | FunctionalComponent\n\t@Event() smoothlyRoomSelected: EventEmitter<{ history: boolean }>\n\t@Event() smoothlyRoomLoaded: EventEmitter<{ selected: boolean }>\n\tprivate contentElement?: HTMLElement\n\n\tcomponentWillLoad() {\n\t\tthis.selected = (typeof this.path == \"string\" ? new URLPattern({ pathname: this.path }) : this.path).test(\n\t\t\twindow.location\n\t\t)\n\t\tthis.smoothlyRoomLoaded.emit({ selected: this.selected })\n\t}\n\n\t@Method()\n\tasync getContent(): Promise<HTMLElement | undefined> {\n\t\treturn this.contentElement\n\t}\n\t@Method()\n\tasync setSelected(selected: boolean, options?: { history?: boolean }): Promise<void> {\n\t\tthis.selected = selected\n\t\tif (selected)\n\t\t\tthis.smoothlyRoomSelected.emit({ history: !!options?.history })\n\t}\n\n\tclickHandler(event: MouseEvent) {\n\t\tif (!event.metaKey && !event.ctrlKey && event.which != 2 && event.button != 1) {\n\t\t\tevent.preventDefault()\n\t\t\tthis.setSelected(true)\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<li>\n\t\t\t\t\t<a href={typeof this.path == \"string\" ? this.path : this.path.pathname} onClick={e => this.clickHandler(e)}>\n\t\t\t\t\t\t{this.icon ? <smoothly-icon name={this.icon} toolTip={this.label}></smoothly-icon> : this.label}\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t\t<div ref={e => (this.contentElement = e)}>\n\t\t\t\t\t{this.content && <smoothly-lazy content={this.content} />}\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tbackground-color: rgba(var(--smoothly-default-color), 1);\n\topacity: var(--opacity);\n\tpointer-events: var(--pointer-events);\n\ttransition: opacity 400ms;\n\tz-index: 3;\n\tborder-radius: 50%;\n\tbox-shadow: var(--smoothly-shadow);\n\theight: 3rem;\n\twidth: 3rem;\n\tposition: fixed;\n\tbottom: var(--bottom);\n\tright: var(--right);\n\toutline: none;\n\tcursor: pointer;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n","import { Component, h, Host, Prop, State } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-back-to-top\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyBackToTop {\n\t@Prop() opacity = \"0.5\"\n\t@Prop() bottom = \"1rem\"\n\t@Prop() right = \"1rem\"\n\t@State() visible: boolean\n\tcomponentWillLoad() {\n\t\twindow.addEventListener(\"scroll\", () => {\n\t\t\tthis.visible = document.body.scrollTop > 20 || document.documentElement.scrollTop > 20\n\t\t})\n\t}\n\trender() {\n\t\tconst cssVariables = {\n\t\t\t\"--opacity\": this.visible ? this.opacity : \"0\",\n\t\t\t\"--pointer-events\": this.visible ? \"auto\" : \"none\",\n\t\t\t\"--bottom\": this.bottom,\n\t\t\t\"--right\": this.right,\n\t\t}\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={cssVariables}\n\t\t\t\tonClick={() =>\n\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t})\n\t\t\t\t}>\n\t\t\t\t<smoothly-icon name=\"caret-up-outline\"></smoothly-icon>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host([visible]){\ndisplay: flex;\njustify-content: center;\nalign-items: center;\nheight: 100%;\n}\n:host([visible]) .burger smoothly-icon{\n\tfont-size: 1.7em;\n\tcursor: pointer;\n\tmargin-right: 1em;\n}\n:host:not([visible]){\n\tdisplay: none;\n}\n:host:not([open]) smoothly-icon{\n\ttransform: rotate(0deg);\n\ttransition: transform 100ms ease-in-out;\n}\n:host([open]) smoothly-icon{\n\ttransform: rotate(-90deg);\n\ttransition: transform 100ms ease-in-out;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-burger\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyBurger {\n\t@Element() element: HTMLSmoothlyBurgerElement\n\t@Prop({ mutable: true, reflect: true }) visible: boolean\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Prop({ reflect: true }) mediaQuery = \"(max-width: 900px)\"\n\t@State() history: boolean\n\t@Event() smoothlyNavStatus: EventEmitter<boolean>\n\t@Event() smoothlyVisibleStatus: EventEmitter<boolean>\n\n\tcomponentWillLoad() {\n\t\tthis.history = window.matchMedia(this.mediaQuery).matches\n\t\tif (!window.matchMedia(this.mediaQuery).matches)\n\t\t\tthis.visible = false\n\t\telse\n\t\t\tthis.visible = true\n\t\tthis.smoothlyNavStatus.emit(!this.visible)\n\t\tthis.smoothlyVisibleStatus.emit(this.visible)\n\t}\n\n\t@Watch(\"open\")\n\topenChanged() {\n\t\tthis.smoothlyNavStatus.emit(this.open)\n\t}\n\n\t@Listen(\"click\")\n\tclickHandler(event: MouseEvent) {\n\t\tif (this.visible)\n\t\t\tthis.open = !this.open\n\t}\n\n\t@Listen(\"resize\", { target: \"window\" })\n\tresizeHandler() {\n\t\tconst result = window.matchMedia(this.mediaQuery).matches\n\t\tif (result != this.history) {\n\t\t\tif (result) {\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.open = false\n\t\t\t} else {\n\t\t\t\tthis.visible = false\n\t\t\t\tthis.open = false\n\t\t\t}\n\t\t\tthis.smoothlyVisibleStatus.emit(this.visible)\n\t\t\tthis.smoothlyNavStatus.emit(!this.visible)\n\t\t}\n\t\tthis.history = result\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<span class=\"burger\">\n\t\t\t\t\t<smoothly-icon name=\"menu\" />\n\t\t\t\t</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { FunctionalComponent, h } from \"@stencil/core\"\nimport { redirect } from \"../model\"\n\nexport const Button: FunctionalComponent<Button.Properties> = ({ disabled, type, link }, children) => {\n\treturn disabled && (link || type == \"link\") ? (\n\t\t<slot></slot>\n\t) : type == \"link\" ? (\n\t\t<a href={link} onClick={!link || !local(link) ? undefined : e => (e.preventDefault(), redirect(convert(link)))}>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</a>\n\t) : type == \"download\" ? (\n\t\t<a href={link} target=\"_blank\" download>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</a>\n\t) : (\n\t\t<button disabled={disabled}>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</button>\n\t)\n}\nfunction convert(path: string): string {\n\tlet result: ReturnType<typeof convert>\n\tif (path.startsWith(window.location.origin))\n\t\tresult = new URL(path).pathname\n\telse if (path.match(/^\\//))\n\t\tresult = new URL(path, window.location.origin).pathname\n\telse\n\t\tresult = new URL(`${window.location.pathname.replace(/\\/+$/, \"\")}/${path}`, window.location.origin).pathname\n\n\treturn result\n}\n\nfunction local(path: string): boolean {\n\treturn new URL(path, window.location.origin).origin == window.location.origin\n}\nexport namespace Button {\n\texport interface Properties {\n\t\tdisabled: boolean\n\t\ttype: \"link\" | \"button\" | \"download\"\n\t\tlink?: string\n\t}\n}\n","@import \"../color/style.css\";\n\n:host{\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tborder-radius: 0.5rem;\n\tborder: solid 1px;\n\ttransition: background 150ms ease-in-out;\n\tcursor: pointer;\n}\n:host([type=link]) {\n\tdisplay: inline;\n\tborder: none;\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n:host > a,\n:host > button {\n\tfont-size: 110%;\n\tfont-weight: 400;\n\tborder: none;\n\tbackground-color: transparent;\n\tcursor: pointer;\n\tdisplay: inline-flex;\n\tgap: 0.5rem;\n}\n:host > button {\n\tjustify-content: center;\n\theight: 100%;\n\twidth: 100%;\n\tborder-radius: 0.5rem;\n\talign-items: center;\n}\n:host(:not([size=icon]):not([size=flexible])) > button {\n\tpadding: 0.8em;\n\tmin-width: 8em;\n}\n:host(:not([size=icon]):not([size=flexible])):has(smoothly-icon) > button {\n\tpadding: 0.6em;\n}\n:host([size=icon]) > button {\n\tpadding: 0.5em;\n}\n:host([shape=rounded]) > button,\n:host([shape=rounded]) {\n\tborder-radius: 2rem;\n}\n:host([type=button]) > a {\n\ttext-align: center;\n\ttext-decoration: inherit;\n\twidth: calc(100% - 0.6em);\n}\n:host([size=small]) > button {\n\tfont-size: 100%;\n}\n:host([size=large]) > button {\n\tfont-size: 130%;\n}\n:host(:not([size=icon])) {\n\tmin-width: 8em;\n}\n:host([size=flexible]) {\n\tmin-width: unset;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tborder: none;\n}\n:host([size=flexible]) > button {\n\tmin-width: unset;\n\tpadding: 0;\n\tmargin: 0 !important;\n}\n:host([expand]) {\n\twidth: 100%;\n}\n:host([expand=full]) {\n\tborder-left: none;\n\tborder-right: none;\n\tborder-radius: 0;\n}\n:host([shape=rounded]) > button,\n:host([shape=rounded]) {\n\tborder-radius: 2rem;\n}\n:host(:not([fill=clear]):hover),\n:host(:not([fill=clear]):focus),\t\n:host(:not([fill=clear]):active) {\n\tborder-color: rgb(var(--smoothly-color-tint)) !important;\n\tbackground: rgb(var(--smoothly-color-tint)) !important;\n}\n:host(:not([fill=clear]):hover) > button,\n:host(:not([fill=clear]):focus) > button,\n:host(:not([fill=clear]):active) > button,\n:host(:not([fill=clear]):hover) ::slotted(smoothly-icon),\n:host(:not([fill=clear]):focus) ::slotted(smoothly-icon),\n:host(:not([fill=clear]):active) ::slotted(smoothly-icon) {\n\tcolor: rgb(var(--smoothly-color-contrast)) !important;\n\tstroke: rgb(var(--smoothly-color-contrast)) !important;\n\tfill: rgb(var(--smoothly-color-contrast)) !important;\n}\n:host([fill=clear]:hover) > button,\n:host([fill=clear]:focus) > button,\n:host([fill=clear]:active) > button {\n\tcolor: rgb(var(--smoothly-color-tint)) !important;\n\tstroke: rgb(var(--smoothly-color-tint)) !important;\n\tfill: rgb(var(--smoothly-color-tint)) !important;\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n:host(:not([fill])),\n:host([fill=default]) {\n\tbackground: rgb(var(--smoothly-color));\n\tborder-color: transparent;\n}\n:host([fill=solid]) {\n\tbackground: rgb(var(--smoothly-color));\n\tborder-color: rgb(var(--smoothly-color));\n}\n:host([fill=solid]) > button,\n:host([fill=default]) > button {\n\tstroke: rgb(var(--smoothly-color-contrast));\n\tfill: rgb(var(--smoothly-color-contrast));\n\tcolor: rgb(var(--smoothly-color-contrast));\n}\n:host([fill=outline]) > button,\n:host([fill=clear]) > button {\n\tstroke: rgb(var(--smoothly-color));\n\tfill: rgb(var(--smoothly-color));\n\tcolor: rgb(var(--smoothly-color));\n}\n:host([fill=outline]) {\n\tbackground: transparent;\n\tborder-color: rgb(var(--smoothly-color));\n}\n:host([fill=clear]) {\n\tbackground: transparent;\n\tborder-color: transparent;\n}\n::slotted(smoothly-icon[slot=start]),\n::slotted(smoothly-icon[slot=end]) {\n\tfont-size: 0.65em;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\n","import { Component, h, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Button } from \"../Button\"\n\n@Component({\n\ttag: \"smoothly-button\",\n\tstyleUrl: \"../button/style.css\",\n\tscoped: true,\n})\nexport class SmoothlyButton {\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: Button.Properties[\"type\"] = \"button\"\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop() link?: string\n\n\trender() {\n\t\treturn (\n\t\t\t<Button disabled={this.disabled} type={this.type} link={this.link}>\n\t\t\t\t<slot />\n\t\t\t</Button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: inline-block;\n}\n:host([disabled]) {\n\topacity: 0.5;\n}\n:host:not([warning]) > smoothly-button:first-child {\n\tdisplay: none;\n}\n:host[warning] > smoothly-button:nth-child(2) {\n\tdisplay: none;\n}\n:host([expand]) {\n\twidth: 100%;\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, State, VNode } from \"@stencil/core\"\nimport { Color, Data, Fill } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-button-confirm\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyButtonConfirm {\n\ttimer?: number\n\t@Prop() color?: Color\n\t@Prop({ reflect: true }) name: string\n\t@Prop() doubleClickTime = 0.2\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop() fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop() shape?: \"rounded\"\n\t@Prop() type: \"link\" | \"button\" = \"button\"\n\t@Prop() size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@State() clickTimeStamp: number | undefined\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyConfirm: EventEmitter<Data>\n\n\tclickHandler(event: MouseEvent): void {\n\t\tif (this.clickTimeStamp && event.timeStamp - this.clickTimeStamp > this.doubleClickTime * 1000) {\n\t\t\tthis.timer && window.clearTimeout(this.timer)\n\t\t\tthis.clickTimeStamp = undefined\n\t\t\tthis.smoothlyConfirm.emit({ [this.name]: true })\n\t\t} else {\n\t\t\tthis.clickTimeStamp = event.timeStamp\n\t\t\tthis.timer = window.setTimeout(() => {\n\t\t\t\tthis.clickTimeStamp = undefined\n\t\t\t}, 2000)\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host warning={this.clickTimeStamp}>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tfill={this.fill}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\tcolor={\"warning\"}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\ttype={this.type}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<smoothly-icon name={\"alert-outline\"} fill=\"solid\" color=\"warning\" size=\"tiny\" />\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tfill={this.fill}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\ttype={this.type}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","smoothly-button-demo {\n\tdisplay: block;\n\tmargin: 1rem;\n}\n\nsmoothly-button-demo > section > div {\n\tdisplay: flex;\n\talign-items: center;\n}\n","import { Component, h } from \"@stencil/core\"\n@Component({\n\ttag: \"smoothly-button-demo\",\n\tstyleUrl: \"style.css\",\n})\nexport class SmoothlyButtonDemo {\n\trender() {\n\t\treturn [\n\t\t\t<h2>Buttons</h2>,\n\t\t\t<section>\n\t\t\t\t<h4>Confirm button (two clicks)</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button-confirm name=\"confirm\" type=\"button\" shape=\"rounded\" color=\"danger\" size=\"large\">\n\t\t\t\t\t\tDelete\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t\t<smoothly-button-confirm name=\"confirm-icon\" type=\"button\" shape=\"rounded\" color=\"success\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" size=\"small\" />\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t</div>\n\t\t\t\t<h4>Toggle button</h4>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"card\" fill=\"solid\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"briefcase\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"airplane\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<h4>Toggle switches</h4>\n\t\t\t\t<smoothly-toggle-switch\n\t\t\t\t\tcheckmark={false}\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tdisabled={false}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tonSmoothlyToggleSwitchChange={e => {\n\t\t\t\t\t\tconsole.log(\"toggleSwitch \", e.detail)\n\t\t\t\t\t}}></smoothly-toggle-switch>\n\t\t\t\t<smoothly-toggle-switch disabled={false}></smoothly-toggle-switch>\n\t\t\t\t<smoothly-toggle-switch disabled={false} size=\"large\"></smoothly-toggle-switch>\n\t\t\t\t<h4>Links with icons</h4>\n\t\t\t\t<smoothly-button type=\"link\">\n\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\ttype link\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"button\" color=\"warning\" fill=\"default\">\n\t\t\t\t\t<smoothly-icon name=\"call\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t<a href=\"https://google.com\">link</a>\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button link=\"https://google.com\" type=\"link\">\n\t\t\t\t\t<smoothly-icon name=\"arrow-forward\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\tlink + type link\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Size and Color test</h4>\n\t\t\t\t<smoothly-button color=\"primary\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Primary + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"secondary\" fill=\"solid\" shape=\"rounded\">\n\t\t\t\t\tColor Secondary + Default\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"warning\" fill=\"solid\" size=\"large\">\n\t\t\t\t\tColor Warning + Large\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"danger\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Danger + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"success\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Success + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"tertiary\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Tertiary + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"dark\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Dark + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"medium\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Medium + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"light\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Light + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Expand examples</h4>\n\t\t\t\t<smoothly-button color=\"secondary\" fill=\"solid\" expand=\"full\">\n\t\t\t\t\tColor Secondary + Default\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"warning\" fill=\"solid\" expand=\"block\">\n\t\t\t\t\tColor Warning + Large\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Fill examples</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"primary\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tFill Solid\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"secondary\" fill=\"outline\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" fill=\"clear\"></smoothly-icon>\n\t\t\t\t\t\tFill Outline\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"tertiary\" fill=\"clear\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" fill=\"clear\"></smoothly-icon>\n\t\t\t\t\t\tFill Clear\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"success\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"basketball\" fill=\"solid\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Buttons with Icon in \"start\"</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"warning\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"secondary\">\n\t\t\t\t\t\t<smoothly-icon name=\"basketball\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" fill=\"solid\" shape=\"rounded\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"flexible\" fill=\"solid\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"airplane\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Buttons with Icon in \"end\"</h4>\n\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\">\n\t\t\t\t\tGo Forward\n\t\t\t\t\t<smoothly-icon name=\"arrow-forward\" slot=\"end\"></smoothly-icon>\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Test for icon button</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button size=\"icon\" fill=\"solid\" shape=\"rounded\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"warning\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"search-outline\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"secondary\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Link examples</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button type=\"link\">type link</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"button\" fill=\"clear\">\n\t\t\t\t\t\t<a href=\"https://google.com\">link</a>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button link=\"https://google.com\" type=\"link\">\n\t\t\t\t\t\tlink + type link\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Disabled buttons</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button disabled fill=\"solid\" color=\"secondary\">\n\t\t\t\t\t\tDisabled\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"https://google.com\" disabled>\n\t\t\t\t\t\tDisabled link\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t</section>,\n\t\t\t<smoothly-back-to-top />,\n\t\t]\n\t}\n}\n","import * as isoly from \"isoly\"\n\nexport function month(date: isoly.Date): isoly.Date[][] {\n\tconst d = new Date(date)\n\td.setDate(1)\n\tlet day = -((d.getDay() + 6) % 7) + 1\n\tconst result: string[][] = []\n\tfor (let row = 0; row < 6; row++) {\n\t\tconst r = []\n\t\tfor (let column = 0; column < 7; column++) {\n\t\t\tconst d = new Date(date)\n\t\t\td.setUTCDate(day++)\n\t\t\tr.push(isoly.Date.create(d))\n\t\t}\n\t\tif (row < 5 || isoly.Date.firstOfMonth(r[0]) == isoly.Date.firstOfMonth(date))\n\t\t\tresult.push(r)\n\t}\n\treturn result\n}\n\nexport function weekdays(): string[] {\n\tconst day = new globalThis.Date()\n\tday.setDate(day.getDate() - day.getDay() + 1)\n\tconst result: string[] = []\n\tfor (let i = 0; i < 7; i++) {\n\t\tresult.push(day.toLocaleString(undefined, { weekday: \"short\" }))\n\t\tday.setDate(day.getDate() + 1)\n\t}\n\treturn result\n}\n\nexport function months(current: isoly.Date): { date: isoly.Date; name: string; selected?: boolean }[] {\n\tconst day = new globalThis.Date(current)\n\tconst result: { date: isoly.Date; name: string; selected?: boolean }[] = []\n\tfor (let i = 0; i < 12; i++) {\n\t\tday.setMonth(i, 28)\n\t\tconst date = isoly.Date.create(day)\n\t\tresult.push({\n\t\t\tdate,\n\t\t\tname: day.toLocaleString(undefined, { month: \"long\" }),\n\t\t\tselected: date.substr(0, 7) == current.substr(0, 7),\n\t\t})\n\t}\n\treturn result\n}\nexport function years(current: isoly.Date): { date: isoly.Date; name: string; selected?: boolean }[] {\n\tconst day = new globalThis.Date(current)\n\tconst start = new Date().getFullYear() - 10\n\tconst end = new Date().getFullYear() + 10\n\tconst result: { date: isoly.Date; name: string; selected?: boolean }[] = []\n\tfor (let i = start; i <= end; i++) {\n\t\tday.setFullYear(i)\n\t\tconst date = isoly.Date.create(day)\n\t\tresult.push({\n\t\t\tdate,\n\t\t\tname: day.toLocaleString(undefined, { year: \"numeric\" }),\n\t\t\tselected: date == current,\n\t\t})\n\t}\n\treturn result\n}\n",":host {\n\tdisplay: block;\n\t--other-month-opacity: 0.5;\n\tmargin-bottom: 1rem;\n}\n:host > smoothly-input-month {\n\twidth: calc(100% - 1em);\n\tpadding: 0.5em 0.5em 0 0.5em;\n}\n:host > table {\n\ttable-layout: fixed;\n\twidth: 100%;\n}\n:host > table > thead > tr > th,\n:host > table > tr > td {\n\ttext-align: center;\n\tpadding: 0.5em;\n\tmin-width: 2em;\n\tbackground-color: rgb(var(--smoothly-default-shade));\n\tcursor: pointer;\n\tuser-select: none;\n}\n:host > table > tr > td.currentMonth {\n\tcolor: rgb(var(--smoothly-default-contrast));\n}\n:host > table > tr > td:not(.currentMonth) {\n\tcolor: rgba(var(--smoothly-default-contrast), var(--other-month-opacity));\n}\n:host > table > tr > td:nth-child(6):not(.currentMonth).selected,\n:host > table > tr > td:nth-child(6):not(.currentMonth).dateRange,\n:host > table > tr > td:nth-child(7):not(.currentMonth).selected,\n:host > table > tr > td:nth-child(7):not(.currentMonth).dateRange {\n\tcolor: rgba(var(--smoothly-default-contrast));\n}\n:host > table > tr > td:nth-child(6),\n:host > table > tr > td:nth-child(7) {\n\tcolor: rgb(var(--smoothly-danger-tint));\n}\n:host > table > tr > td:nth-child(6):not(.currentMonth),\n:host > table > tr > td:nth-child(7):not(.currentMonth) {\n\tcolor: rgba(var(--smoothly-danger-tint), var(--other-month-opacity));\n}\n:host > table > tr > td:not(.selected, .disable):hover {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-tint));\n}\n:host > table > tr > td.selected {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-color));\n}\n:host > table > tr > td:not(.selected, .dateRange):not(:hover).today {\n\tbackground: rgb(var(--smoothly-dark-tint));\n\tcolor: rgb(var(--smoothly-dark-contrast));\n}\n:host > table > tr > td.dateRange {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-tint));\n}\n:host > table > tr > td.disable {\n\tcursor: not-allowed;\n\tbackground-color: rgb(var(--smoothly-default-tint), 0.5);\n\tcolor: rgb(var(--smoothly-default-contrast), 0.5);\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State, Watch } from \"@stencil/core\"\nimport { Date, DateRange } from \"isoly\"\nimport * as generate from \"./generate\"\n\n@Component({\n\ttag: \"smoothly-calendar\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Calendar {\n\tprivate frozenDate: Date\n\t@Element() element: HTMLTableRowElement\n\t@Prop({ mutable: true }) month?: Date\n\t@Prop({ mutable: true }) value: Date = Date.now()\n\t@Prop({ mutable: true }) start?: Date\n\t@Prop({ mutable: true }) end?: Date\n\t@Prop({ mutable: true }) max: Date\n\t@Prop({ mutable: true }) min: Date\n\t@Prop({ reflect: true }) doubleInput: boolean\n\t@Event() smoothlyValueChange: EventEmitter<Date>\n\t@Event() smoothlyStartChange: EventEmitter<Date>\n\t@Event() smoothlyEndChange: EventEmitter<Date>\n\t@Event() smoothlyDateSet: EventEmitter<Date>\n\t@Event() smoothlyDateRangeSet: EventEmitter<DateRange>\n\t@State() firstSelected: boolean\n\t@Watch(\"start\")\n\tonStart(next: Date) {\n\t\tthis.smoothlyStartChange.emit(next)\n\t}\n\t@Watch(\"end\")\n\tonEnd(next: Date) {\n\t\tthis.smoothlyEndChange.emit(next)\n\t}\n\tprivate clickCounter = 0\n\tprivate onClick(date: Date) {\n\t\tthis.smoothlyValueChange.emit((this.value = date))\n\t\tthis.clickCounter += 1\n\t\tif (this.doubleInput) {\n\t\t\tif (this.clickCounter % 2 == 1)\n\t\t\t\tthis.start = this.end = this.frozenDate = date\n\t\t\telse {\n\t\t\t\tif (this.start && date > this.start)\n\t\t\t\t\tthis.end = date\n\t\t\t\telse\n\t\t\t\t\tthis.start = date\n\t\t\t}\n\t\t}\n\t\t!this.doubleInput && this.smoothlyDateSet.emit(this.value)\n\t\tthis.doubleInput &&\n\t\t\tthis.clickCounter % 2 == 0 &&\n\t\t\tthis.start &&\n\t\t\tthis.end &&\n\t\t\tthis.smoothlyDateRangeSet.emit({ start: this.start, end: this.end })\n\t}\n\tprivate onHover(date: Date) {\n\t\tif (this.doubleInput && this.clickCounter % 2 == 1) {\n\t\t\tif (date < this.frozenDate) {\n\t\t\t\tthis.start = date\n\t\t\t\tthis.end = this.frozenDate\n\t\t\t} else {\n\t\t\t\tthis.start = this.frozenDate\n\t\t\t\tthis.end = date\n\t\t\t}\n\t\t}\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<smoothly-input-month\n\t\t\t\tname=\"month\"\n\t\t\t\tvalue={this.month ?? this.value}\n\t\t\t\tnext\n\t\t\t\tprevious\n\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\"month\" in e.detail && typeof e.detail.month == \"string\" && (this.month = e.detail.month)\n\t\t\t\t}}>\n\t\t\t\t<div slot={\"year-label\"}>\n\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t</div>\n\t\t\t\t<div slot={\"month-label\"}>\n\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t</div>\n\t\t\t</smoothly-input-month>,\n\t\t\t<table>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{generate.weekdays().map(day => (\n\t\t\t\t\t\t\t<th>{day}</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t{generate.month(this.month ?? this.value).map(week => (\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{week.map(date => (\n\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\ttabindex={1}\n\t\t\t\t\t\t\t\tonMouseOver={() => {\n\t\t\t\t\t\t\t\t\t!this.doubleInput && (this.min || this.max) && (date < this.min || date > this.max)\n\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t: this.onHover(date)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t(this.min || this.max) && (date < this.min || date > this.max) ? undefined : () => this.onClick(date)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclass={(date == this.value ? [\"selected\"] : [])\n\t\t\t\t\t\t\t\t\t.concat(\n\t\t\t\t\t\t\t\t\t\t...(date == Date.now() ? [\"today\"] : []),\n\t\t\t\t\t\t\t\t\t\tDate.firstOfMonth(this.month ?? this.value) == Date.firstOfMonth(date) ? [\"currentMonth\"] : [],\n\t\t\t\t\t\t\t\t\t\tthis.doubleInput\n\t\t\t\t\t\t\t\t\t\t\t? this.start == date || this.end == date\n\t\t\t\t\t\t\t\t\t\t\t\t? [\"selected\"]\n\t\t\t\t\t\t\t\t\t\t\t\t: date >= (this.start ?? \"\") && date <= (this.end ?? \"\")\n\t\t\t\t\t\t\t\t\t\t\t\t? [\"dateRange\"]\n\t\t\t\t\t\t\t\t\t\t\t\t: []\n\t\t\t\t\t\t\t\t\t\t\t: \"\"\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.concat(...(this.min || this.max ? (date < this.min || date > this.max ? [\"disable\"] : []) : \"\"))\n\t\t\t\t\t\t\t\t\t.join(\" \")}>\n\t\t\t\t\t\t\t\t{date.substring(8, 10)}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t))}\n\t\t\t</table>,\n\t\t]\n\t}\n}\n",":host {\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 55%;\n left: 50%;\n transform: translate(-50%, -50%);\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1;\n\t/* stylelint-disable-next-line declaration-no-important */\n\tbackground: rgba(var(--smoothly-default-color), var(--smoothly-semitransparent)) !important;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > section {\n\tmargin-top: var(--smoothly-dialog-margin-top)\n}\n:host > section > div.header {\n\tborder-top-left-radius: 8px;\n\tborder-top-right-radius: 8px;\n\tmargin-top: 2em;\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-color));\n\tborder-color: rgb(var(--smoothly-primary-color));\n}\n:host:not([header]) div.header {\n\tborder: none;\n}\n\n:host > section > * {\n\tposition: relative;\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tbackground-color: rgb(var(--smoothly-default-color));\n\tborder-color: rgb(var(--smoothly-color));\n\tborder-width: 1px;\n\tborder-style: solid;\n\tmax-width: 40em;\n\twidth: calc(100vw - 4em - 2px);\n\tmax-height: calc(100vh - 6em - 2px);\n\theight: auto;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tborder-collapse: collapse;\n}\n:host > section > div.content {\n\tborder-bottom-left-radius: 8px;\n\tborder-bottom-right-radius: 8px;\n\tmargin-bottom: 2em;\n\tborder: 1px solid rgb(var(--smoothly-default-contrast));\n\tbox-sizing: border-box;\n\toverflow: hidden;\n}\n:host:not([header]) >section> div.content {\n\tborder-radius: 8px;\n}\n:host > section > * > smoothly-trigger {\n\tposition: absolute;\n\tright: -2em;\n\ttop: -2em;\n\tz-index: 1;\n\tborder-color: transparent;\n}\n:host > section > * > smoothly-trigger:hover {\n\tborder-color: transparent;\n}\n:host > section > div.header > smoothly-trigger > smoothly-icon {\n\tbackground-color: rgb(var(--smoothly-color));\n\tborder-radius: 50%;\n}\n:host > section > * > * {\n\tmargin: 10px;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-dialog\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDialog {\n\t@Prop({ reflect: true }) color: Color | undefined\n\t@Prop({ mutable: true, reflect: true }) open = true\n\t@Prop({ reflect: true }) closable = false\n\t@Prop({ reflect: true }) header: string | undefined\n\t@Listen(\"trigger\")\n\tTriggerListener(event: CustomEvent<Trigger>) {\n\t\tif (Trigger.is(event.detail) && event.detail.name == \"close\")\n\t\t\tthis.open = false\n\t}\n\thostData() {\n\t\treturn {\n\t\t\tstyle: {\n\t\t\t\tdisplay: this.open ? \"block\" : \"none\",\n\t\t\t},\n\t\t}\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<section>\n\t\t\t\t<div class=\"header\">\n\t\t\t\t\t{this.closable && (\n\t\t\t\t\t\t<smoothly-trigger fill=\"clear\" name=\"close\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close-circle\" fill=\"solid\" color={this.color}></smoothly-icon>\n\t\t\t\t\t\t</smoothly-trigger>\n\t\t\t\t\t)}\n\t\t\t\t\t{this.header ? <h1>{this.header}</h1> : <slot name=\"header\"></slot>}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t)\n\t}\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-dialog-demo\",\n})\nexport class SmoothlyDialogDemo {\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-dialog color=\"default\" closable>\n\t\t\t\t<smoothly-frame url=\"https://www.wikipedia.org/\" name=\"parent\" style={{ height: \"80vh\" }}></smoothly-frame>\n\t\t\t</smoothly-dialog>\n\t\t)\n\t}\n}\n","function getForwardWordBreakIndex(str, index, wordRegex) {\n let result = 0;\n while (wordRegex.exec(str) != null) {\n result = wordRegex.lastIndex;\n if (wordRegex.lastIndex > index)\n break;\n }\n wordRegex.lastIndex <= index && (result = str.length);\n return result;\n}\nfunction getBackwardWordBreakIndex(str, index, wordRegex) {\n let result = 0;\n let execArray;\n while ((execArray = wordRegex.exec(str)) != null) {\n if (wordRegex.lastIndex - execArray[0].length < index)\n result = wordRegex.lastIndex - execArray[0].length;\n else\n break;\n }\n return result;\n}\nexport function getAdjecentWordBreakIndex(str, index, direction) {\n const wordRegex = /([\\wåäöüéáúíóßðœøæñµçþ_]+|[@-]+)/gi;\n return direction == \"backward\"\n ? getBackwardWordBreakIndex(str, index, wordRegex)\n : getForwardWordBreakIndex(str, index, wordRegex);\n}\n//# sourceMappingURL=getAdjecentWordBreakIndex.js.map","export var Selection;\n(function (Selection) {\n function getCursor(selection) {\n return selection.direction == \"backward\" ? selection.start : selection.end;\n }\n Selection.getCursor = getCursor;\n function getStalker(selection) {\n return selection.direction != \"backward\" ? selection.start : selection.end;\n }\n Selection.getStalker = getStalker;\n})(Selection || (Selection = {}));\n//# sourceMappingURL=Selection.js.map","export var State;\n(function (State) {\n function copy(state) {\n return {\n value: state.value,\n selection: { start: state.selection.start, end: state.selection.end, direction: state.selection.direction },\n };\n }\n State.copy = copy;\n})(State || (State = {}));\n//# sourceMappingURL=State.js.map","export class StateEditor {\n constructor(state) {\n this.value = state.value;\n this.selection = { start: state.selection?.start, end: state.selection?.end, direction: state.selection?.direction };\n }\n get(index, length = 1) {\n return this.value.substr(index, length);\n }\n is(index, ...character) {\n const c = this.get(index);\n return character.some(d => c == d);\n }\n isDigit(index) {\n const character = this.get(index);\n return character >= \"0\" && character <= \"9\";\n }\n match(matcher) {\n return this.value.match(matcher);\n }\n replace(start, end, value) {\n let result;\n if (typeof start == \"string\" && typeof end == \"string\") {\n let s;\n result = this;\n while ((s = result.value.indexOf(start)) > -1)\n result = result.replace(s, s + start.length, end);\n }\n else if (typeof start == \"number\" && typeof end == \"number\") {\n const state = {\n value: this.value,\n selection: { start: this.selection.start, end: this.selection.end, direction: this.selection.direction },\n };\n if (!value)\n value = \"\";\n state.value = this.value.slice(0, start) + value + this.value.slice(end, this.value.length);\n if (this.selection.start >= end)\n state.selection.start = this.selection.start + value.length - end + start;\n else if (this.selection.start > start && this.selection.start < end)\n state.selection.start = Math.min(this.selection.start, start + value.length);\n if (this.selection.end >= end)\n state.selection.end = this.selection.end + value.length - end + start;\n else if (this.selection.end > start && this.selection.end < end)\n state.selection.end = Math.min(this.selection.end, start + value.length);\n result = new StateEditor(state);\n }\n return result || this;\n }\n insert(index, value) {\n return this.replace(index, index, value);\n }\n append(value) {\n return this.insert(this.value.length, value);\n }\n prepend(value) {\n return this.insert(0, value);\n }\n suffix(value) {\n return new StateEditor({ value: this.value + value, selection: this.selection });\n }\n delete(start, end) {\n let result;\n if (!this.value)\n result = this;\n else if (typeof start == \"string\") {\n let s;\n result = this;\n while (start && (s = result.value.indexOf(start)) > -1)\n result = result.delete(s, s + start.length);\n }\n else\n result = this.replace(start, end || start + 1, \"\");\n return result;\n }\n truncate(end) {\n return this.value.length >= end ? this.delete(end, this.value.length) : this;\n }\n pad(length, padding, index) {\n let result = this;\n while (length > result.value.length + padding.length)\n result = result.insert(index, padding);\n if (length > result.value.length)\n result = result.insert(index, padding.substring(0, length - result.value.length));\n return result;\n }\n padEnd(length, padding) {\n return this.pad(length, padding, this.value.length);\n }\n padStart(length, padding) {\n return this.pad(length, padding, 0);\n }\n toLower() {\n return this.map(symbol => symbol.toLowerCase());\n }\n toUpper() {\n return this.map(symbol => symbol.toUpperCase());\n }\n map(mapping) {\n let result = this;\n let j = 0;\n for (let i = 0; i < this.value.length; i++) {\n const replacement = mapping(this.get(i), i);\n result = result.replace(j, j + 1, replacement);\n j += replacement.length;\n }\n return result;\n }\n static copy(state) {\n return new StateEditor({ ...state });\n }\n static create() {\n return new StateEditor({ value: \"\", selection: { start: 0, end: 0 } });\n }\n static modify(state) {\n return new StateEditor(typeof state == \"string\" ? { value: state, selection: { start: state.length, end: state.length } } : state);\n }\n}\n//# sourceMappingURL=StateEditor.js.map","import { getAdjecentWordBreakIndex } from \"./getAdjecentWordBreakIndex\";\nimport { Selection } from \"./Selection\";\nimport { State } from \"./State\";\nimport { StateEditor } from \"./StateEditor\";\nexport var Action;\n(function (Action) {\n function apply(formatter, state, action) {\n let result = State.copy(formatter.unformat(StateEditor.copy(state)));\n if (state.autocomplete == \"cc-exp\" && /^\\d\\d \\/$/g.test(state.value))\n action?.key && (action.key = \"Backspace\");\n if (action) {\n if (action.ctrlKey || action.metaKey) {\n if (action.key == \"a\")\n select(result, 0, result.value.length, \"forward\");\n else if ([\"ArrowLeft\", \"ArrowRight\"].includes(action.key) && state?.type != \"password\")\n result = ctrlArrow(formatter, state, action);\n else if ([\"Delete\", \"Backspace\"].includes(action.key) && state?.type != \"password\")\n result = ctrlBackspaceDelete(formatter, state, action);\n }\n else if ([\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(action.key))\n arrowHomeEnd(result, action);\n else if ([\"Delete\", \"Backspace\"].includes(action.key)) {\n result.selection.start == result.selection.end &&\n select(result, result.selection.start + (action.key == \"Backspace\" ? -1 : 0), result.selection.end + (action.key == \"Delete\" ? 1 : 0));\n erase(result);\n }\n else if (action.key != \"Unidentified\") {\n erase(result);\n formatter.allowed(action.key, result) && replace(result, action.key);\n }\n }\n return formatter.format(StateEditor.copy(result));\n }\n Action.apply = apply;\n function paste(formatter, state, pasted) {\n const result = State.copy(formatter.unformat(StateEditor.copy(state)));\n replace(result, pasted);\n return formatter.format(StateEditor.copy(result));\n }\n Action.paste = paste;\n function ctrlArrow(formatter, state, action) {\n let cursorPosition = Selection.getCursor(state.selection);\n let stalkPosition = Selection.getStalker(state.selection);\n cursorPosition = getAdjecentWordBreakIndex(state.value, cursorPosition, action.key == \"ArrowLeft\" ? \"backward\" : \"forward\");\n stalkPosition = action.shiftKey ? stalkPosition : cursorPosition;\n return State.copy(formatter.unformat(StateEditor.copy({\n ...state,\n selection: {\n start: Math.min(stalkPosition, cursorPosition),\n end: Math.max(stalkPosition, cursorPosition),\n direction: stalkPosition < cursorPosition ? \"forward\" : stalkPosition > cursorPosition ? \"backward\" : \"none\",\n },\n })));\n }\n function ctrlBackspaceDelete(formatter, state, action) {\n const cursorPosition = Selection.getCursor(state.selection);\n const adjecentIndex = getAdjecentWordBreakIndex(state.value, cursorPosition, action.key == \"Backspace\" ? \"backward\" : \"forward\");\n const result = State.copy(formatter.unformat(StateEditor.copy({\n ...state,\n selection: {\n start: Math.min(cursorPosition, adjecentIndex),\n end: Math.max(cursorPosition, adjecentIndex),\n direction: \"none\",\n },\n })));\n result.value = result.value.substring(0, result.selection.start) + result.value.substring(result.selection.end);\n result.selection.end = result.selection.start;\n return result;\n }\n function arrowHomeEnd(state, action) {\n let cursorPosition = Selection.getCursor(state.selection);\n let stalkPosition = Selection.getStalker(state.selection);\n cursorPosition =\n action.key == \"Home\"\n ? 0\n : action.key == \"End\"\n ? state.value.length\n : state.selection.start == state.selection.end || action.shiftKey\n ? Math.min(Math.max(cursorPosition + (action.key == \"ArrowLeft\" ? -1 : 1), 0), state.value.length)\n : action.key == \"ArrowLeft\"\n ? state.selection.start\n : state.selection.end;\n stalkPosition = action.shiftKey ? stalkPosition : cursorPosition;\n state.selection.direction =\n stalkPosition < cursorPosition ? \"forward\" : stalkPosition > cursorPosition ? \"backward\" : \"none\";\n state.selection.start = Math.min(stalkPosition, cursorPosition);\n state.selection.end = Math.max(stalkPosition, cursorPosition);\n }\n function select(state, from, to, direction) {\n state.selection.start = from;\n state.selection.end = to;\n direction && (state.selection.direction = direction);\n }\n function erase(state) {\n replace(state, \"\");\n }\n function replace(state, insertString) {\n state.value =\n state.value.substring(0, state.selection.start) + insertString + state.value.substring(state.selection.end);\n state.selection.start = state.selection.start + insertString.length;\n state.selection.end = state.selection.start;\n }\n})(Action || (Action = {}));\n//# sourceMappingURL=Action.js.map","import { StateEditor } from \"../StateEditor\";\nconst handlers = {};\nexport function add(type, create) {\n handlers[type] = create;\n}\nexport function get(type, ...argument) {\n const create = handlers[type];\n return create && create(argument);\n}\nexport function format(data, type, ...argument) {\n const handler = get(type, ...argument);\n return handler\n ? handler.format(StateEditor.modify(handler.toString(typeof data == \"string\" ? parse(data, type, argument) : data)))\n .value\n : \"\";\n}\nexport function parse(value, type, ...argument) {\n const handler = get(type, argument);\n return handler ? handler.fromString(handler.unformat(StateEditor.modify(value)).value) : undefined;\n}\n//# sourceMappingURL=base.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, type: \"tel\", autocomplete: \"cc-csc\", length: [3, 3], pattern: /^\\d{3}$/ };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return state.value.length < 3 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"card-csc\", () => new Handler());\n//# sourceMappingURL=card-csc.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return Array.isArray(data) && data.length == 2 && typeof data[0] == \"number\" && typeof data[1] == \"number\"\n ? data[0].toString().padStart(2, \"0\") + data[1].toString().padStart(2, \"0\")\n : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && value.length == 4\n ? [Number.parseInt(value.slice(0, 2)), Number.parseInt(value.slice(2))]\n : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (unformatted.value.length > 0 && !unformatted.is(0, \"0\", \"1\"))\n result = result.prepend(\"0\");\n if (result.value.length > 1)\n result = result.insert(2, \" / \");\n return { ...result, type: \"tel\", autocomplete: \"cc-exp\", length: [7, 7], pattern: /^(0[1-9]|1[012]) \\/ \\d\\d$/ };\n }\n unformat(formatted) {\n return formatted.delete(\" / \");\n }\n allowed(symbol, state) {\n return state.value.length < 4 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"card-expires\", () => new Handler());\n//# sourceMappingURL=card-expires.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n const issuer = getIssuer(unformatted.value);\n const result = unformatted.map((symbol, index) => (index != 0 && index % 4 == 0 && index + 1 < issuer.length[0] ? \" \" : \"\") + symbol);\n return {\n ...result,\n type: \"tel\",\n autocomplete: \"cc-number\",\n length: issuer.length.slice(1),\n pattern: issuer.verification,\n classes: [\"issuer-\" + issuer.icon],\n };\n }\n unformat(formatted) {\n return formatted.delete(\" \");\n }\n allowed(symbol, state) {\n const issuer = getIssuer(state.value);\n return symbol >= \"0\" && symbol <= \"9\" && state.value.length < issuer.length[0];\n }\n}\nadd(\"card-number\", () => new Handler());\nfunction getIssuer(value) {\n let result = defaultIssuer;\n for (const key in issuers)\n if (Object.prototype.hasOwnProperty.call(issuers, key) && issuers[key].identification.test(value)) {\n result = { ...defaultIssuer, name: key, ...issuers[key] };\n break;\n }\n return result;\n}\nconst defaultIssuer = {\n name: \"unknown\",\n verification: /^\\d{19}$/,\n identification: /^\\d/,\n length: [16, 16, 19],\n icon: \"generic\",\n};\nconst issuers = {\n amex: {\n verification: /^3[47][0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{3}$/,\n identification: /^3[47]/,\n length: [15, 18, 18],\n icon: \"amex\",\n },\n dankort: {\n verification: /^(5019)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^(5019)\\d+/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n diners: {\n verification: /^3(?:0[0-5]|[68][0-9])[0-9]\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{2}$/,\n identification: /^3(?:0[0-5]|[68][0-9])/,\n length: [14, 17, 17],\n icon: \"diners\",\n },\n discover: {\n verification: /^6(?:011|5[0-9]{2})\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^6(?:011|5[0-9]{2})/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n electron: {\n verification: /^((4026|4405|4508|4844|4913|4917)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})|((4175)\\s(00)[0-9]{2}\\s[0-9]{4}\\s[0-9]{4})$/,\n identification: /^(4026|417500|4405|4508|4844|4913|4917)/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n interpayment: {\n verification: /^(636)[0-9]\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^(636)/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n jcb: {\n verification: /^((?:2131|1800)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})|(35[0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})$/,\n identification: /^(?:2131|1800|35\\d{3})/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n unionpay: {\n verification: /^(62|88)[0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^(62|88)/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n maestro: {\n verification: /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)/,\n length: [16, 19, 19],\n icon: \"maestro\",\n },\n mastercard: {\n verification: /^5[1-5][0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^5[1-5][0-9]/,\n length: [16, 19, 19],\n icon: \"mastercard\",\n },\n visa: {\n verification: /^4[0-9]{3}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9](?:[0-9]{3})?$/,\n identification: /^4[0-9]/,\n length: [16, 16, 19],\n icon: \"visa\",\n },\n};\n//# sourceMappingURL=card-number.js.map","export var DateFormat;\n(function (DateFormat) {\n function fromLocale(locale) {\n let result;\n switch (locale) {\n case \"sq-AL\":\n case \"es-AR\":\n case \"it-IT\":\n case \"en-GB\":\n case \"fr-FR\":\n result = \"dd/mm/YYYY\";\n break;\n case \"en-US\":\n result = \"mm/dd/YYYY\";\n break;\n case \"et-EE\":\n case \"de-AT\":\n case \"de-DE\":\n case \"he-IL\":\n case \"is-IS\":\n case \"lv-LV\":\n case \"pl-PL\":\n case \"ru-RU\":\n case \"fi-FI\":\n result = \"dd.mm.YYYY\";\n break;\n case \"hi-IN\":\n case \"en-IN\":\n result = \"dd-mm-YYYY\";\n break;\n default:\n result = \"YYYY-mm-dd\";\n break;\n }\n return result;\n }\n DateFormat.fromLocale = fromLocale;\n function toLocale(format) {\n let result;\n switch (format) {\n case \"dd/mm/YYYY\":\n result = \"en-GB\";\n break;\n case \"mm/dd/YYYY\":\n result = \"en-US\";\n break;\n case \"dd.mm.YYYY\":\n result = \"de-DE\";\n break;\n default:\n result = \"sv-SE\";\n break;\n }\n return result;\n }\n DateFormat.toLocale = toLocale;\n function is(value) {\n return (typeof value == \"string\" &&\n (value == \"YYYY-mm-dd\" || value == \"dd/mm/YYYY\" || value == \"dd.mm.YYYY\" || value == \"mm/dd/YYYY\"));\n }\n DateFormat.is = is;\n})(DateFormat || (DateFormat = {}));\n//# sourceMappingURL=DateFormat.js.map","import { DateFormat } from \"../../DateFormat\";\nimport { add } from \"../base\";\nexport class Base {\n constructor(separator) {\n this.separator = separator;\n }\n unformat(formatted) {\n return formatted.delete(this.separator);\n }\n validMonth(day, month, year) {\n return (new Date(Number.parseInt(year ?? \"2004\"), Number.parseInt(month), 0).getDate() >=\n Number.parseInt(day));\n }\n}\nconst handlers = {};\nexport function register(format, create) {\n handlers[format] = create;\n}\nadd(\"date\", (parameters) => {\n const argument = parameters && parameters.length > 0 ? parameters[0] : undefined;\n const format = DateFormat.is(argument) ? argument : DateFormat.fromLocale(argument);\n const create = handlers[format] ?? handlers[\"YYYY-mm-dd\"];\n return create();\n});\n//# sourceMappingURL=Base.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n }\n toString(data) {\n return isoly.Date.is(data) && data.length == 10\n ? [data.substring(8, 10), data.substring(5, 7), data.substring(0, 4)].join(this.separator)\n : \"\";\n }\n fromString(value) {\n const result = value?.length == 8 ? `${value.substring(4, 8)}-${value.substring(2, 4)}-${value.substring(0, 2)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.get(0, 1) > \"3\")\n result = result.insert(0, \"0\");\n if (result.value.length > 1)\n result = result.insert(2, this.separator);\n if (result.get(3, 1) > \"1\")\n result = result.insert(3, \"0\");\n if (result.value.length > 4)\n result = result.insert(5, this.separator);\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^(0[1-9]|[12][0-9]|3[01])\", \"(0[1-9]|1[012])\", \"\\\\d{4}$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n return state.selection.start == 1 && state.value[0] == \"3\"\n ? symbol >= \"0\" && symbol <= \"1\"\n : state.selection.start == 1 && state.value[0] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 2\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n (symbol == \"0\" || symbol == \"1\" || this.validMonth(state.value.substring(0, 2), symbol))\n : state.selection.start == 3\n ? symbol >= \"0\" && symbol <= \"9\" && this.validMonth(state.value.substring(0, 2), state.value[2] + symbol)\n : state.selection.start == 7\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n this.validMonth(state.value.substring(0, 2), state.value.substring(2, 4), state.value.substring(4, 7) + symbol)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nregister(\"dd.mm.YYYY\", () => new Handler(\".\"));\nregister(\"dd/mm/YYYY\", () => new Handler(\"/\"));\nregister(\"dd-mm-YYYY\", () => new Handler(\"-\"));\n//# sourceMappingURL=dmy.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n }\n toString(data) {\n return isoly.Date.is(data) && data.length == 10\n ? [data.substring(5, 7), data.substring(8, 10), data.substring(0, 4)].join(this.separator)\n : \"\";\n }\n fromString(value) {\n const result = value.length == 8 ? `${value.substring(4, 8)}-${value.substring(0, 2)}-${value.substring(2, 4)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.get(0, 1) > \"1\")\n result = result.insert(0, \"0\");\n if (result.value.length > 1)\n result = result.insert(2, this.separator);\n if (result.get(3, 1) > (result.get(0, 2) == \"02\" ? \"2\" : \"3\"))\n result = result.insert(3, \"0\");\n if (result.value.length > 4)\n result = result.insert(5, this.separator);\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^(0[1-9]|1[012])\", \"(0[1-9]|[12][0-9]|3[01])\", \"\\\\d{4}$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n const result = state.selection.start == 1 && state.value[0] == \"1\"\n ? symbol >= \"0\" && symbol <= \"2\"\n : state.selection.start == 1 && state.value[0] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 3\n ? symbol >= \"0\" && symbol <= \"9\" && this.validMonth(state.value[2] + symbol, state.value.substring(0, 2))\n : state.selection.start == 7\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n this.validMonth(state.value.substring(2, 4), state.value.substring(0, 2), state.value.substring(4, 7) + symbol)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n return result;\n }\n}\nregister(\"mm/dd/YYYY\", () => new Handler(\"/\"));\n//# sourceMappingURL=mdy.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n }\n toString(data) {\n return typeof data != \"string\" ? \"\" : data;\n }\n fromString(value) {\n const result = value?.length == 8 ? `${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n daysInMonth(value) {\n const firstOfMonth = `${value.substring(0, 4)}-${value.substring(4, 6)}-01`;\n return isoly.Date.is(firstOfMonth)\n ? +isoly.Date.lastOfMonth(`${value.substring(0, 4)}-${value.substring(4, 6)}-01`).substring(8, 10)\n : 31;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.value.length > 3) {\n result = result.insert(4, this.separator);\n if (result.get(5, 1) > \"1\")\n result = result.insert(5, \"0\");\n if (result.value.length > 6) {\n result = result.insert(7, this.separator);\n if (result.get(8, 1) > this.daysInMonth(unformatted.value).toString().substring(0, 1))\n result = result.insert(8, \"0\");\n }\n }\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^\\\\d{4}\", \"(0[1-9]|1[012])\", \"(0[1-9]|[12][0-9]|3[01])$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n const daysInMonth = this.daysInMonth(state.value);\n return state.selection.start == 5 && state.value[4] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 5 && state.value[4] == \"1\"\n ? symbol >= \"0\" && symbol <= \"2\"\n : state.selection.start == 7 && state.value[6] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 7 && ((state.value[6] == \"2\" && daysInMonth < 30) || state.value[6] == \"3\")\n ? symbol >= \"0\" && symbol <= daysInMonth.toString().substring(1)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nregister(\"YYYY-mm-dd\", () => new Handler(\"-\"));\n//# sourceMappingURL=ymd.js.map","import * as isoly from \"isoly\";\nimport { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n let result = value.replace(\" \", \"T\");\n const fillerDate = \"0000-01-01T00:00:00.000Z\";\n if (result?.match(/-\\d$/))\n result = result.substring(0, result.length - 1) + \"0\" + result.substring(result.length - 1, result.length);\n result = !result.match(/^\\d{4}-(0[1-9]|1[012])/)\n ? undefined\n : result + fillerDate.substring(result.length, fillerDate.length);\n return isoly.DateTime.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = formatDate(unformatted);\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[\\d:.-]$/))\n result = result.insert(10, \" \");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 3$/))\n result = result.replace(11, 12, \"23:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) [45]$/))\n result = result.insert(11, \"23:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) [6-9]$/))\n result = result.insert(11, \"23:5\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 24$/))\n result = result.replace(10, 13, \"00:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 25$/))\n result = result.insert(12, \"3:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 2[6-9]$/))\n result = result.insert(12, \"3:5\").append(\":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3])\\d[\\s\\S]$/))\n result = result.insert(13, \":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[6-9]$/))\n result = result.insert(14, \"5\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[0-5]\\d\\d$/))\n result = result.insert(16, \":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[0-5]\\d:[6-9]$/))\n result = result.insert(17, \"5\");\n return {\n ...result,\n type: \"text\",\n length: [0, 19],\n pattern: /^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3])(:[0-5]\\d){2}$/,\n };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (state.value.length < 19 &&\n ((symbol >= \"0\" && symbol <= \"9\") || symbol == \"-\" || symbol == \":\" || symbol == \".\" || symbol == \" \"));\n }\n}\nadd(\"date-time\", () => new Handler());\nexport function formatDate(unformatted, format) {\n let result = unformatted;\n switch (format) {\n case \"dd/mm/YYYY\":\n case \"dd.mm.YYYY\":\n if (!validDate(result.value, format))\n result = result.replace(0, 10, validDate(\"31\" + result.value.substring(2, 10), format)\n ? \"31\" + result.value.substring(2, 10)\n : validDate(\"30\" + result.value.substring(2, 10), format)\n ? \"30\" + result.value.substring(2, 10)\n : validDate(\"29\" + result.value.substring(2, 10), format)\n ? \"29\" + result.value.substring(2, 10)\n : validDate(\"28\" + result.value.substring(2, 10), format)\n ? \"28\" + result.value.substring(2, 10)\n : result.value);\n break;\n case \"mm/dd/YYYY\":\n if (!validDate(result.value, format))\n result = result.replace(0, 10, validDate(result.value.substring(0, 3) + \"31\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"31\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"30\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"30\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"29\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"29\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"28\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"28\" + result.value.substring(5, 10)\n : result.value);\n break;\n default:\n if (unformatted.value.length == 10) {\n if (!validDate(result.value)) {\n result = result.replace(0, 10, validDate(result.value.substring(0, 8) + \"31\")\n ? result.value.substring(0, 8) + \"31\"\n : validDate(result.value.substring(0, 8) + \"30\")\n ? result.value.substring(0, 8) + \"30\"\n : validDate(result.value.substring(0, 8) + \"29\")\n ? result.value.substring(0, 8) + \"29\"\n : validDate(result.value.substring(0, 8) + \"28\")\n ? result.value.substring(0, 8) + \"28\"\n : result.value);\n break;\n }\n return unformatted;\n }\n }\n return result;\n}\nfunction validDate(date, format) {\n let year;\n let month;\n let day;\n switch (format) {\n case \"dd/mm/YYYY\":\n case \"dd.mm.YYYY\":\n year = parseInt(date.substring(6, 10));\n month = parseInt(date.substring(3, 5));\n day = parseInt(date.substring(0, 2));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n case \"mm/dd/YYYY\":\n year = parseInt(date.substring(6, 10));\n month = parseInt(date.substring(0, 2));\n day = parseInt(date.substring(3, 5));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n default:\n year = parseInt(date.substring(0, 4));\n month = parseInt(date.substring(5, 7));\n day = parseInt(date.substring(8, 10));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n }\n}\nfunction daysPerMonth(year, month) {\n let result;\n switch (month) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 8:\n case 10:\n case 12:\n default:\n result = 31;\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n result = 30;\n break;\n case 2:\n result = 28;\n break;\n }\n return result;\n}\n//# sourceMappingURL=date-time.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return Array.isArray(data) && data.length == 2 && typeof data[0] == \"number\" && typeof data[1] == \"number\"\n ? data[0].toString() + \" / \" + data[1].toString()\n : typeof data == \"number\"\n ? data.toString()\n : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && value.match(/^\\d{1,2}\\s+\\/\\s+\\d{1,2}$/)\n ? [Number.parseInt(value.slice(0, 2)), Number.parseInt(value.slice(value.length - 2))]\n : typeof value == \"string\" && value.match(/\\d{1,2}/)\n ? Number.parseInt(value)\n : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (unformatted.match(/^\\d\\/$/))\n result = unformatted.replace(1, 2, \" / \");\n else if (unformatted.match(/^\\d{1,2}\\s$/))\n result = unformatted.replace(unformatted.value.length - 1, unformatted.value.length, \" / \");\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+$/))\n result = unformatted.delete(0, unformatted.value.length);\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+\\d$/))\n result = unformatted.delete(0, unformatted.value.length - 1);\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+\\d\\d$/))\n result = unformatted.delete(0, unformatted.value.length - 2);\n else if (unformatted.match(/^[\\D.]+\\//))\n result = unformatted.delete(0, unformatted.value.search(\"/\") + 1);\n else if (unformatted.match(/^\\d\\d\\/$/))\n result = unformatted.replace(2, 3, \" / \");\n else if (unformatted.match(/^\\d\\d\\s+\\/$/))\n result = unformatted.delete(2, unformatted.value.length);\n else if (unformatted.match(/^\\d\\s+\\/$/))\n result = unformatted.delete(1, unformatted.value.length);\n else if (unformatted.match(/^\\d\\d\\s\\s+\\/\\s*$/))\n result = unformatted.replace(2, unformatted.value.length, \" / \");\n else if (unformatted.match(/^\\d\\s\\s+(\\/\\s*)?$/))\n result = unformatted.replace(1, unformatted.value.length, \" / \");\n else if (unformatted.match(/^\\d\\s\\/\\s\\d\\d.+$/))\n result = unformatted.delete(6, unformatted.value.length);\n else if (unformatted.value.length > 1 && unformatted.value.indexOf(\"/\") < 1)\n result = unformatted.insert(2, \" / \");\n else if (unformatted.value.length > 1 && unformatted.value.split(\"/\").length > 2)\n result = unformatted.delete(unformatted.value.lastIndexOf(\"/\"));\n else if (unformatted.value.length == 1 && !unformatted.isDigit(0))\n result = unformatted.delete(0);\n return { ...result, type: \"text\", length: [1, 7], pattern: /^(\\d{1,2}|\\d{1,2} \\/ \\d{1,2})$/ };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return state.value.length < 7 && ((symbol >= \"0\" && symbol <= \"9\") || symbol == \"/\" || symbol == \" \");\n }\n}\nadd(\"divisor\", () => new Handler());\n//# sourceMappingURL=divisor.js.map","import { isoly } from \"isoly\";\nimport { add } from \"./base\";\nclass Handler {\n constructor() {\n this.separator = \":\";\n this.patterns = {\n allowed: /^-?\\d*(?::{0,1}[0-5]{0,1}[0-9]{0,1}|[.,]{0,1}[0-9]{0,2})$/,\n extract: /^(-?)(\\d*)([:,.]{0,1})([0-9]{0,2})$/,\n zeros: /^(-?)(0+)(?:[1-9]|0[,.:]?)/,\n };\n }\n toString(data) {\n let result;\n if (!isoly.TimeSpan.is(data))\n result = \"\";\n else {\n const span = isoly.TimeSpan.normalize(data);\n if (!span.minutes && !span.hours)\n result = \"\";\n else if (this.separator != \":\")\n result = (+isoly.TimeSpan.toHours(span).toFixed(2) || \"\").toString(10);\n else if (span.hours && !span.minutes)\n result = span.hours.toString(10);\n else if (!span.hours && span.minutes)\n result = `${span.minutes < 0 ? \"-\" : \"\"}0:${Math.abs(span.minutes).toString(10)}`;\n else\n result = `${span.hours?.toString(10)}:${Math.abs(span.minutes ?? 0).toString(10)}`;\n }\n return result;\n }\n fromString(value) {\n let result;\n const match = value.match(this.patterns.extract);\n if (!match)\n result = undefined;\n else {\n const [value, negative, hours, separator, minutes] = match;\n this.separator = separator;\n if (separator == \":\") {\n const parsed = {\n hours: parseInt(hours),\n minutes: parseInt(minutes),\n };\n const multiplicand = negative ? -1 : 1;\n result = isoly.TimeSpan.normalize({\n hours: !Number.isFinite(parsed.hours) ? 0 : parsed.hours * multiplicand,\n minutes: !Number.isFinite(parsed.minutes) ? 0 : parsed.minutes * multiplicand,\n });\n }\n else {\n const hours = parseFloat(value.replace(\",\", \".\"));\n result = isoly.TimeSpan.normalize({\n hours: !Number.isFinite(hours) ? 0 : hours,\n });\n }\n }\n return result;\n }\n format(unformatted) {\n let result = unformatted;\n const [, negative, hours, separator] = unformatted.match(this.patterns.extract) ?? [];\n if (!hours && separator)\n result = result.insert(negative ? 1 : 0, \"0\");\n const match = result.match(this.patterns.zeros);\n if (match) {\n const [, negative, zeros] = match;\n if (zeros) {\n const offset = negative ? 1 : 0;\n result = result.delete(offset, zeros.length + offset);\n }\n }\n return { ...result, type: \"tel\", pattern: this.patterns.allowed };\n }\n unformat(formatted) {\n const [, , , separator] = formatted.match(this.patterns.extract) ?? [];\n if (separator)\n this.separator = separator;\n return formatted;\n }\n allowed(symbol, state) {\n const nextValue = state.value.slice(0, state.selection.start) + symbol + state.value.slice(state.selection.end);\n return !!nextValue.match(this.patterns.allowed);\n }\n}\nadd(\"duration\", () => new Handler());\n//# sourceMappingURL=duration.js.map","import { add } from \"./base\";\nconst modeTypes = [\"code\", \"pascal\", \"snake\", \"camel\", \"attribute\"];\nclass Handler {\n constructor(settings, mode) {\n this.settings = settings;\n this.mode = mode;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n split(unformatted) {\n let firstAllowedSymbol;\n let previousAllowedSymbol = \"\";\n return unformatted\n .map((symbol, index) => {\n const newSymbol = index !== 0 &&\n symbol === symbol.toUpperCase() &&\n isNaN(+symbol) &&\n previousAllowedSymbol !== \" \" &&\n this.isSymbolAllowed(symbol) &&\n firstAllowedSymbol\n ? \" \" + symbol\n : (symbol === \"_\" || symbol === \"-\") && previousAllowedSymbol !== \" \"\n ? \" \"\n : (symbol === \" \" && previousAllowedSymbol === \" \") ||\n !this.isSymbolAllowed(symbol) ||\n (!firstAllowedSymbol && !this.isSymbolLetter(symbol) && this.mode !== \"code\")\n ? \"\"\n : symbol;\n !firstAllowedSymbol && (firstAllowedSymbol = this.isSymbolLetter(symbol));\n this.isSymbolAllowed(symbol) && (previousAllowedSymbol = symbol);\n return newSymbol;\n })\n .toLower()\n .delete(\"-\")\n .delete(\"_\");\n }\n isSymbolLetter(symbol) {\n return (symbol >= \"a\" && symbol <= \"z\") || (symbol >= \"A\" && symbol <= \"Z\");\n }\n isSymbolAllowed(symbol) {\n return this.isSymbolLetter(symbol) || (symbol >= \"0\" && symbol <= \"9\") || symbol === \" \";\n }\n format(unformatted) {\n const alignedString = this.split(unformatted);\n let result;\n switch (this.mode) {\n case \"code\":\n result = alignedString.delete(\" \");\n break;\n case \"pascal\":\n case \"camel\":\n let previousSpace;\n result = alignedString\n .map((symbol, index) => {\n const newSymbol = (index === 0 && this.mode === \"pascal\") || previousSpace ? symbol.toUpperCase() : symbol.toLowerCase();\n previousSpace = symbol == \" \";\n return newSymbol;\n })\n .delete(\" \");\n break;\n case \"snake\":\n case \"attribute\":\n result = alignedString.replace(\" \", this.mode === \"snake\" ? \"_\" : \"-\");\n break;\n default:\n result = unformatted;\n }\n return { ...result, ...this.settings, type: \"text\", autocomplete: \"on\" };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (this.isSymbolLetter(symbol) ||\n (symbol >= \"0\" && symbol <= \"9\" && (this.mode == \"code\" || state.value.length > 0)) ||\n (symbol == \"_\" && this.mode == \"snake\" && state.value.length > 0) ||\n (symbol == \"-\" && this.mode == \"attribute\" && state.value.length > 0));\n }\n}\nadd(\"identifier-code\", (settings) => new Handler(settings || {}, \"code\"));\nadd(\"identifier-pascal\", (settings) => new Handler(settings || {}, \"pascal\"));\nadd(\"identifier-snake\", (settings) => new Handler(settings || {}, \"snake\"));\nadd(\"identifier-camel\", (settings) => new Handler(settings || {}, \"camel\"));\nadd(\"identifier-attribute\", (settings) => new Handler(settings || {}, \"attribute\"));\n//# sourceMappingURL=identifier.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(country) {\n this.country = country;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n const year = new Date().getFullYear().toString();\n if (unformatted.value.length > 1 && unformatted.get(0, 2) != \"19\" && unformatted.get(0, 2) != \"20\")\n result = result.prepend(unformatted.get(0, 2) > year.substr(2, 2) ? \"19\" : \"20\");\n if (result.value.length >= 8)\n result = result.insert(8, \"-\");\n return {\n ...result.truncate(13),\n type: \"text\",\n length: [11, 13],\n pattern: /^\\d{6,8}-\\d{4}$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\"-\");\n }\n allowed(symbol, state) {\n return state.value.length < 13 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"identity-number\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=identity-number.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"number\" ? data.toString() : \"\";\n }\n fromString(value) {\n const parsed = typeof value == \"string\" ? Number.parseInt(value) : undefined;\n return typeof parsed == \"number\" && !Number.isNaN(parsed) ? parsed : undefined;\n }\n format(unformatted) {\n return {\n ...unformatted,\n type: \"number\",\n length: [3, undefined],\n pattern: /^[0-9]+$/,\n };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"integer\", () => new Handler());\n//# sourceMappingURL=integer.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, type: \"password\", autocomplete: \"current-password\" };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return true;\n }\n}\nadd(\"password\", () => new Handler());\n//# sourceMappingURL=password.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"number\" ? (data * 100).toString() : \"\";\n }\n fromString(value) {\n const parsedFloat = typeof value == \"string\" ? Number.parseFloat(value) : undefined;\n return typeof parsedFloat == \"number\" && !Number.isNaN(parsedFloat) ? parsedFloat / 100 : undefined;\n }\n format(unformatted) {\n return {\n ...(unformatted.value ? unformatted.suffix(\" %\") : unformatted),\n type: \"text\",\n length: [3, undefined],\n pattern: /^\\d+(.\\d)? %+$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\" %\");\n }\n allowed(symbol, state) {\n return (symbol >= \"0\" && symbol <= \"9\") || (symbol == \".\" && !state.value.includes(\".\"));\n }\n}\nadd(\"percent\", () => new Handler());\n//# sourceMappingURL=percent.js.map","export const phonePrefix = [\n {\n countryCode: \"+46\",\n areaCodes: [\n \"011\",\n \"0120\",\n \"0121\",\n \"0122\",\n \"0123\",\n \"0125\",\n \"013\",\n \"0140\",\n \"0141\",\n \"0142\",\n \"0143\",\n \"0144\",\n \"0150\",\n \"0151\",\n \"0152\",\n \"0155\",\n \"0156\",\n \"0157\",\n \"0158\",\n \"0159\",\n \"016\",\n \"0171\",\n \"0173\",\n \"0174\",\n \"0175\",\n \"0176\",\n \"018\",\n \"019\",\n \"021\",\n \"0220\",\n \"0221\",\n \"0222\",\n \"0223\",\n \"0224\",\n \"0225\",\n \"0226\",\n \"0227\",\n \"023\",\n \"0240\",\n \"0241\",\n \"0243\",\n \"0246\",\n \"0247\",\n \"0248\",\n \"0250\",\n \"0251\",\n \"0253\",\n \"0258\",\n \"026\",\n \"0270\",\n \"0271\",\n \"0278\",\n \"0280\",\n \"0281\",\n \"0290\",\n \"0291\",\n \"0292\",\n \"0293\",\n \"0294\",\n \"0295\",\n \"0297\",\n \"0300\",\n \"0301\",\n \"0302\",\n \"0303\",\n \"0304\",\n \"031\",\n \"0320\",\n \"0321\",\n \"0322\",\n \"0325\",\n \"033\",\n \"0340\",\n \"0345\",\n \"0346\",\n \"035\",\n \"036\",\n \"0370\",\n \"0371\",\n \"0372\",\n \"0380\",\n \"0381\",\n \"0382\",\n \"0383\",\n \"0390\",\n \"0392\",\n \"0393\",\n \"040\",\n \"0410\",\n \"0411\",\n \"0413\",\n \"0414\",\n \"0415\",\n \"0416\",\n \"0417\",\n \"0418\",\n \"042\",\n \"0430\",\n \"0431\",\n \"0433\",\n \"0435\",\n \"044\",\n \"0451\",\n \"0454\",\n \"0455\",\n \"0456\",\n \"0457\",\n \"0459\",\n \"046\",\n \"0470\",\n \"0471\",\n \"0472\",\n \"0474\",\n \"0476\",\n \"0477\",\n \"0478\",\n \"0479\",\n \"0480\",\n \"0481\",\n \"0485\",\n \"0486\",\n \"0490\",\n \"0491\",\n \"0492\",\n \"0493\",\n \"0494\",\n \"0495\",\n \"0496\",\n \"0498\",\n \"0499\",\n \"0500\",\n \"0501\",\n \"0502\",\n \"0503\",\n \"0504\",\n \"0505\",\n \"0506\",\n \"0510\",\n \"0511\",\n \"0512\",\n \"0513\",\n \"0514\",\n \"0515\",\n \"0520\",\n \"0521\",\n \"0522\",\n \"0523\",\n \"0524\",\n \"0525\",\n \"0526\",\n \"0528\",\n \"0530\",\n \"0531\",\n \"0532\",\n \"0533\",\n \"0534\",\n \"054\",\n \"0550\",\n \"0551\",\n \"0552\",\n \"0553\",\n \"0554\",\n \"0555\",\n \"0560\",\n \"0563\",\n \"0564\",\n \"0565\",\n \"0570\",\n \"0571\",\n \"0573\",\n \"0580\",\n \"0581\",\n \"0582\",\n \"0583\",\n \"0584\",\n \"0585\",\n \"0586\",\n \"0587\",\n \"0589\",\n \"0590\",\n \"0591\",\n \"060\",\n \"0611\",\n \"0612\",\n \"0613\",\n \"0620\",\n \"0621\",\n \"0622\",\n \"0623\",\n \"0624\",\n \"063\",\n \"0640\",\n \"0642\",\n \"0643\",\n \"0644\",\n \"0645\",\n \"0647\",\n \"0650\",\n \"0651\",\n \"0652\",\n \"0653\",\n \"0657\",\n \"0660\",\n \"0661\",\n \"0662\",\n \"0663\",\n \"0670\",\n \"0671\",\n \"0672\",\n \"0680\",\n \"0682\",\n \"0684\",\n \"0687\",\n \"0690\",\n \"0691\",\n \"0692\",\n \"0693\",\n \"0695\",\n \"0696\",\n \"08\",\n \"090\",\n \"0910\",\n \"0911\",\n \"0912\",\n \"0913\",\n \"0914\",\n \"0915\",\n \"0916\",\n \"0918\",\n \"0920\",\n \"0921\",\n \"0922\",\n \"0923\",\n \"0924\",\n \"0925\",\n \"0926\",\n \"0927\",\n \"0928\",\n \"0929\",\n \"0930\",\n \"0932\",\n \"0933\",\n \"0934\",\n \"0935\",\n \"0940\",\n \"0941\",\n \"0942\",\n \"0943\",\n \"0950\",\n \"0951\",\n \"0952\",\n \"0953\",\n \"0954\",\n \"0960\",\n \"0961\",\n \"0970\",\n \"0971\",\n \"0973\",\n \"0975\",\n \"0976\",\n \"0977\",\n \"0978\",\n \"0980\",\n \"0981\",\n \"010\",\n \"020\",\n \"0378\",\n \"070\",\n \"072\",\n \"073\",\n \"076\",\n \"079\",\n \"0710\",\n \"0740\",\n \"0746\",\n \"0749\",\n \"0741\",\n \"0742\",\n \"0743\",\n \"0744\",\n \"0745\",\n \"0747\",\n \"075\",\n \"077\",\n \"078\",\n \"0900\",\n \"0939\",\n \"0944\",\n \"0969\",\n \"099\",\n ],\n },\n];\n//# sourceMappingURL=phonePrefix.js.map","import { add } from \"./base\";\nimport { phonePrefix } from \"./phonePrefix\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.value.startsWith(\"+\")) {\n for (const country of phonePrefix)\n if (result.value.startsWith(country.countryCode))\n for (let prefix of country.areaCodes) {\n prefix = prefix.substring(1);\n if (result.value.startsWith(country.countryCode + prefix) && !result.value.includes(\"-\"))\n result = result\n .insert(country.countryCode.length, \"-\")\n .insert(country.countryCode.length + 1 + prefix.length, \"-\");\n }\n }\n else {\n const first = phonePrefix[0];\n for (const prefix of first.areaCodes)\n if (result.value.startsWith(prefix) && !result.value.includes(\"-\")) {\n result = result.insert(prefix.length, \"-\");\n result = result.delete(0);\n result = result.insert(0, \"-\").insert(0, first.countryCode);\n }\n }\n if (result.value.includes(\"-\")) {\n const digitIndex = result.value.indexOf(\"-\", result.value.indexOf(\"-\") + 1) + 1;\n const digitCount = result.value.substring(digitIndex, result.value.length + 1).length;\n switch (digitCount) {\n case 4:\n result = result.insert(digitIndex + 2, \" \");\n break;\n case 5:\n result = result.insert(digitIndex + 3, \" \");\n break;\n case 6:\n result = result.insert(digitIndex + 2, \" \");\n result = result.insert(digitIndex + 5, \" \");\n break;\n case 7:\n result = result.insert(digitIndex + 3, \" \");\n result = result.insert(digitIndex + 6, \" \");\n break;\n case 8:\n case 9:\n result = result.insert(digitIndex + 3, \" \");\n result = result.insert(digitIndex + 7, \" \");\n break;\n default:\n break;\n }\n if (digitCount > 9) {\n const spaces = Math.ceil(digitCount / 3) - 1;\n if (spaces > 0) {\n for (let i = 0; i < spaces; i++) {\n const position = i * 3 + 3 + i;\n result = result.insert(position + digitIndex, \" \");\n }\n }\n }\n }\n return { ...result, type: \"text\", autocomplete: \"tel\" };\n }\n unformat(formatted) {\n return formatted.delete(\" \").delete(\"-\");\n }\n allowed(symbol, state) {\n return ((symbol >= \"0\" && symbol <= \"9\") || (state.selection.start == 0 && symbol == \"+\" && !state.value.includes(\"+\")));\n }\n}\nadd(\"phone\", () => new Handler());\n//# sourceMappingURL=phone.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(country) {\n this.country = country;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n const result = !unformatted.value.includes(\" \") && unformatted.value.length >= 4 ? unformatted.insert(3, \" \") : unformatted;\n return {\n ...result.truncate(6),\n type: \"text\",\n autocomplete: \"postal-code\",\n length: [6, 6],\n pattern: /^\\d{3} \\d{2}$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\" \");\n }\n allowed(symbol, state) {\n return state.value.length <= 5 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"postal-code\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=postal-code.js.map","import { isoly } from \"isoly\";\nimport { StateEditor } from \"../StateEditor\";\nimport { add } from \"./base\";\nclass Handler {\n constructor(currency) {\n this.currency = currency;\n }\n toString(data) {\n return typeof data == \"number\" ? (isNaN(data) ? \"\" : data.toString()) : \"\";\n }\n fromString(value) {\n const result = typeof value == \"string\" ? Number.parseFloat(value) : undefined;\n return result != undefined && !isNaN(result) ? result : undefined;\n }\n format(unformatted) {\n let result = unformatted.value == \"NaN\" ? unformatted.replace(0, unformatted.value.length, \"\") : StateEditor.copy(unformatted);\n const decimals = this.currency && isoly.Currency.decimalDigits(this.currency);\n if (!result.value.includes(\".\") && decimals && Math.abs(Number.parseFloat(result.value)) > 0)\n result = result.suffix(\".0\");\n let separator = result.value && result.value.includes(\".\") ? result.value.indexOf(\".\") : undefined;\n if (separator == 0) {\n result = result.prepend(\"0\");\n separator++;\n }\n if (separator != undefined) {\n const adjust = separator + 1 + (decimals ?? 2) - result.value.length;\n result = adjust < 0 ? result.truncate(result.value.length + adjust) : result.suffix(\"0\".repeat(adjust));\n }\n else\n separator = result.value.length;\n const spaces = separator <= 0 ? 0 : Math.ceil(separator / 3) - 1;\n for (let i = 0; i < spaces; i++) {\n const position = separator - (spaces - i) * 3;\n result = result.insert(position, \" \");\n separator++;\n }\n if (result.match(/^[0\\s]{2,}$/))\n result = result.replace(0, result.value.length, \"0\");\n else if (result.match(/^[0\\s]{2,}(\\s\\w{3}){1}$/))\n result = result.replace(0, result.value.length - 4, \"0\");\n result =\n this.currency && (result.value.length > 1 || (result.value.length == 1 && result.value.charAt(0) != \".\"))\n ? result.suffix(\" \" + this.currency)\n : result;\n return {\n ...result,\n type: \"text\",\n length: [3, undefined],\n pattern: new RegExp(\"^(\\\\d{0,3})( \\\\d{3})*(\\\\.\\\\d+)?\" + (this.currency ? \" \" + this.currency : \"\") + \"$\"),\n };\n }\n unformat(formatted) {\n return this.currency ? formatted.delete(\" \").delete(\"\" + this.currency) : formatted.delete(\" \");\n }\n allowed(symbol, state) {\n return (symbol >= \"0\" && symbol <= \"9\") || (symbol == \".\" && !state.value.includes(\".\"));\n }\n}\nadd(\"price\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=price.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(settings) {\n this.settings = settings;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, type: \"text\", ...this.settings };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (this.settings.length == undefined ||\n this.settings.length[1] == undefined ||\n state.value.length < this.settings.length[1]);\n }\n}\nadd(\"text\", (settings) => new Handler(settings || {}));\nadd(\"email\", (settings) => new Handler(settings || {}));\n//# sourceMappingURL=text.js.map",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n","import { Component, h, Prop } from \"@stencil/core\"\nimport { CountryCode, Currency, DateTime, Language, Locale } from \"isoly\"\nimport { format, get, Type } from \"tidily\"\n\n@Component({\n\ttag: \"smoothly-display\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplay {\n\t@Prop() type: Type\n\t@Prop() value?: any\n\t@Prop() currency?: Currency\n\t@Prop() country?: CountryCode.Alpha2\n\t@Prop() format?: DateTime.Format\n\trender() {\n\t\tlet result: string | HTMLElement | undefined\n\t\tconst type = this.type\n\t\tswitch (type) {\n\t\t\tdefault:\n\t\t\t\tresult = format(this.value, type)\n\t\t\t\tbreak\n\t\t\tcase \"email\":\n\t\t\t\tresult = <a href={\"mailto:\" + this.value}>{format(this.value, type)}</a>\n\t\t\t\tbreak\n\t\t\tcase \"phone\":\n\t\t\t\tresult = <a href={\"tel:\" + this.value}>{format(this.value, type, this.country)}</a>\n\t\t\t\tbreak\n\t\t\tcase \"postal-code\":\n\t\t\t\tresult = format(this.value, type, this.country)\n\t\t\t\tbreak\n\t\t\tcase \"price\":\n\t\t\t\tresult = format(this.value, type, this.currency)\n\t\t\t\tbreak\n\t\t\tcase \"date\":\n\t\t\t\tresult = get(this.type as Type, getLocale())?.toString(this.value)\n\t\t\t\tbreak\n\t\t\tcase \"duration\":\n\t\t\t\tresult = format(this.value, type)\n\t\t\t\tbreak\n\t\t\tcase \"date-time\":\n\t\t\t\tresult = this.format\n\t\t\t\t\t? DateTime.localize(this.value, this.format, getLocale())\n\t\t\t\t\t: get(this.type as Type, getLocale())?.toString(this.value)\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n}\nfunction getLocale(): Locale | undefined {\n\tconst result = navigator.language\n\treturn Locale.is(result) ? result : Language.is(result) ? Locale.toLocale(result) : undefined\n}\n",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n","import { Component, Prop } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-display-amount\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayAmount {\n\t@Prop() amount: number | string\n\t@Prop() currency: isoly.Currency\n\t@Prop() toInteger = false\n\n\tformat(amount: string): string {\n\t\tconst digitsPerGroup = 3\n\t\tconst defaultDecimals = 2\n\t\tconst maxDecimals = (\n\t\t\tisoly.Currency.decimalDigits(this.currency) ? isoly.Currency.decimalDigits(this.currency) : defaultDecimals\n\t\t) as number\n\t\tlet beforeSeparator = amount.length\n\t\tlet separator: number\n\t\tlet result = amount\n\t\tif (result == \"\")\n\t\t\tresult = \"0\"\n\t\tif (amount.includes(\".\")) {\n\t\t\tseparator = amount.indexOf(\".\")\n\t\t\tif (separator == 0) {\n\t\t\t\tresult = \"0\" + result\n\t\t\t\tseparator++\n\t\t\t}\n\t\t\tbeforeSeparator = separator\n\t\t\tresult = result.padEnd(separator + maxDecimals + 1, \"0\")\n\t\t\tresult = result.substring(0, separator + maxDecimals + 1)\n\t\t} else if (!this.toInteger) {\n\t\t\tresult = result + \".\"\n\t\t\tseparator = result.length - 1\n\t\t\tresult = result.padEnd(separator + maxDecimals + 1, \"0\")\n\t\t}\n\t\tconst spaces = Math.ceil(beforeSeparator / digitsPerGroup) - 1\n\t\tif (spaces > 0) {\n\t\t\tfor (let i = 0; i < spaces; i++) {\n\t\t\t\tconst position = beforeSeparator - (spaces - i) * digitsPerGroup\n\t\t\t\tresult = result.slice(0, position) + \" \" + result.slice(position, result.length)\n\t\t\t\tbeforeSeparator++\n\t\t\t}\n\t\t}\n\n\t\treturn result\n\t}\n\n\trender() {\n\t\treturn [\n\t\t\ttypeof this.amount == \"number\" ? this.format(this.amount.toString()) : this.format(this.amount),\n\t\t\t\" \",\n\t\t\tthis.currency,\n\t\t]\n\t}\n}\n","import { Component, Event, EventEmitter, h ,State} from \"@stencil/core\"\nimport { Color, Notice } from \"../../model\"\n@Component({\n\ttag: \"smoothly-display-demo\",\n})\nexport class SmoothlyDisplayDemo {\n\t@State() downloadingSpinner: boolean\n\t@Event() notice: EventEmitter<Notice>\n\tprivate noticeWarning(notice: Notice) {\n\t\tconsole.log(\"emit\", notice)\n\t\tthis.notice.emit(notice)\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<main>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly display</h2>\n\t\t\t\t\t<dl>\n\t\t\t\t\t\t<dt>Duration</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ hours: 13, minutes: 100 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ hours: 8 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ minutes: 3 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ hours: -13, minutes: 100 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ hours: -8 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ minutes: -3 }} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>text</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"text\" value=\"text\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>postal code</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"postal-code\" value=\"752 31\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>password</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"password\" value=\"password\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>email</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"email\" value=\"test@example.com\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"price\" value=\"13.37\" currency=\"SEK\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>display amount without decimals</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-amount amount={200} currency=\"SEK\" toInteger={true}></smoothly-display-amount>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>display amount with decimals if they are set, otherwise no decimal</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-amount amount={200.20} currency=\"SEK\" toInteger={true}></smoothly-display-amount>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>display amount with decimals</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-amount amount={200.20} currency=\"SEK\"></smoothly-display-amount>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>percent</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"percent\" value=\"42\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>phone</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"phone\" value=\"0101881108\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card number</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-number\" value=\"4111111111111111\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card expires</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-expires\" value=\"7/22\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card csc</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-csc\" value=\"987\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>date</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date\" value=\"2022-07-07\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>date time</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"numeric\", month: \"short\", day: \"numeric\", hour: \"numeric\", minute: \"numeric\", second: \"numeric\"}} value=\"2022-07-07T02:02:02Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"2-digit\", month: \"long\", day: \"2-digit\", hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\"}} value=\"2022-07-07T02:02:02Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"numeric\", month: \"2-digit\", day: \"2-digit\", hour: \"numeric\", minute: \"numeric\", second: \"numeric\"}} value=\"2022-07-07T12:22:24Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"numeric\", month: \"numeric\", day: \"numeric\", hour: \"numeric\", minute: \"numeric\", second: \"numeric\"}} value=\"2022-07-07T12:22:24Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"numeric\", month: \"short\", day: \"numeric\"}} value=\"2022-07-07T00:00+02:00\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"2-digit\", month: \"numeric\", day: \"numeric\"}} value=\"2022-07-07T00:00+02:00\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"2-digit\", month: \"numeric\", day: \"numeric\", hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\", timeZone:\"Europe/Stockholm\"}} value=\"2022-07-07T12:15Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>Deprecated display date time</dt>\n\t\t\t\t\t\t<dt>Display amount</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-amount currency=\"SEK\" amount=\"1289.5\"></smoothly-display-amount>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>Quiet</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-quiet color=\"dark\">-</smoothly-quiet>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t</dl>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly skeleton</h2>\n\t\t\t\t\t<smoothly-skeleton period={3} distance=\"20rem\" width=\"20rem\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton period={3} distance=\"20rem\" color=\"200,200,255\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton period={3} distance=\"20rem\" color=\"var(--smoothly-warning-color)\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"center\" period={3} distance=\"20rem\" width=\"20rem\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"center\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"center\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"center\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"right\" period={3} distance=\"20rem\" width=\"20rem\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"right\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"right\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"right\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly URL encoded</h2>\n\t\t\t\t\t<smoothly-urlencoded data=\"hej=hopp&tjena=moss\"></smoothly-urlencoded>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly popup</h2>\n\t\t\t\t\t<div style={{display: \"flex\", justifyContent: \"space-between\"}}>\n\t\t\t\t\t\t<smoothly-popup direction=\"down\">\n\t\t\t\t\t\t\tClick for popup\n\t\t\t\t\t\t\t<span slot=\"popup\" color=\"dark\" style={{whiteSpace: \"nowrap\"}}>Some popup stuff that has a lot of text</span>\n\t\t\t\t\t\t</smoothly-popup>\n\t\t\t\t\t\t<smoothly-popup direction=\"down\">\n\t\t\t\t\t\t\tClick for popup\n\t\t\t\t\t\t\t<span slot=\"popup\" color=\"dark\" style={{whiteSpace: \"nowrap\"}}>Some popup with a bunch of text.</span>\n\t\t\t\t\t\t</smoothly-popup>\n\t\t\t\t\t</div>\n\t\t\t\t\t<smoothly-popup>\n\t\t\t\t\t\t<div>Popup, click me</div>\n\t\t\t\t\t\t<div color=\"dark\" slot=\"popup\">\n\t\t\t\t\t\t\t1 line popup\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-popup>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t<h2>Test of different kinds of notifier</h2>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.warn(\"This is a test warning notice.\"))}>warning</button>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.succeeded(\"This is a test success notice.\"))}>success</button>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.failed(\"This is a test danger notice.\"))}>danger</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tthis.noticeWarning(\n\t\t\t\t\t\t\t\tNotice.execute(\n\t\t\t\t\t\t\t\t\t\"This is a test execute notice.\",\n\t\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t\tnew Promise<[boolean, string]>(resolve =>\n\t\t\t\t\t\t\t\t\t\t\twindow.setTimeout(() => resolve([true, \"This went great\"]), 3000)\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}>\n\t\t\t\t\t\texecute\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tthis.noticeWarning(\n\t\t\t\t\t\t\t\tNotice.delay(\n\t\t\t\t\t\t\t\t\t\"This is a test delay notice.\",\n\t\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t\tnew Promise<[boolean, string]>(resolve =>\n\t\t\t\t\t\t\t\t\t\t\twindow.setTimeout(() => resolve([true, \"This went great\"]), 3000)\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}>\n\t\t\t\t\t\tdelay\n\t\t\t\t\t</button>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly spinner</h2>\n\t\t\t\t\t<div style={{width: \"fit-content\"}}>\n\t\t\t\t\t\tLarge\n\t\t\t\t\t\t<smoothly-spinner size=\"large\" style={{\"--spinner-background\": \"200,255,200\", \"--spinner-background-opacity\": \"0.2\", \"--spinner-color\": \"0,130,0\", }}></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{width: \"fit-content\"}}>\n\t\t\t\t\t\tMedium\n\t\t\t\t\t\t<smoothly-spinner size=\"medium\"></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{width: \"fit-content\"}}>\n\t\t\t\t\t\tSmall\n\t\t\t\t\t\t<smoothly-spinner size=\"small\"></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\tIcon sized spinner on button\n\t\t\t\t\t{Color.types.map(color => \n\t\t\t\t\t\t\t<smoothly-button \n\t\t\t\t\t\t\t\tsize=\"icon\" \n\t\t\t\t\t\t\t\tcolor={color} \n\t\t\t\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tthis.downloadingSpinner = true\n\t\t\t\t\t\t\t\t\tsetTimeout(() => this.downloadingSpinner = false, 3000)\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{!this.downloadingSpinner && <smoothly-icon name=\"download-outline\"></smoothly-icon>}\n\t\t\t\t\t\t\t\t\t{this.downloadingSpinner && <smoothly-spinner size=\"icon\" style={{\"--spinner-background-opacity\": \"0\"}}></smoothly-spinner>}\n\t\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>Spinner with overlay</h3>\n\t\t\t\t\t<div style={{position: \"relative\", height: \"10em\"}}>\n\t\t\t\t\t\tLarge Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner overlay size=\"large\" style={{\"--spinner-background\": \"255,200,255\", \"--spinner-background-opacity\": \"0.5\", \"--spinner-color\": \"0,130,0\", }}></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{position: \"relative\", height: \"10em\"}}>\n\t\t\t\t\t\tMedium Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner overlay color=\"secondary\" size=\"medium\"></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{position: \"relative\", height: \"10em\"}}>\n\t\t\t\t\t\tSmall Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner overlay size=\"small\"></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t{/* <div style={{position: \"absolute\", left: \"500px\", top: \"150px\" }}><smoothly-svg url=\"https://theme.payfunc.com/intergiro/animated-logo.svg\"></smoothly-svg></div> */}\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly summary</h2>\n\t\t\t\t\t<smoothly-summary>\n\t\t\t\t\t\t<p slot=\"summary\">Some title</p>\n\t\t\t\t\t\t<p slot=\"content\">Some content</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary size=\"large\">\n\t\t\t\t\t\t<p slot=\"summary\">Some title</p>\n\t\t\t\t\t\t<p slot=\"content\">Some content</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary color=\"danger\" fill=\"clear\">\n\t\t\t\t\t\t<div slot=\"summary\" style={{display: \"flex\", gap: \"0.3rem\"}}><span>Person</span><smoothly-icon name=\"person\" color=\"light\" fill=\"clear\" size=\"tiny\"></smoothly-icon></div>\n\t\t\t\t\t\t<p slot=\"content\">Some person information.</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary color=\"danger\" fill=\"clear\" open>\n\t\t\t\t\t\t<p slot=\"summary\">Some other title</p>\n\t\t\t\t\t\t<p slot=\"content\">A lot more content, yes please. A lot more content, yes please. A lot more content, yes please. A lot more content, yes please. A lot more content, yes please.A lot more content, yes please. A lot more content, yes please. A lot more content, yes please. A lot more content, yes please.</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<h2>Label</h2>\n\t\t\t\t\t{labels.map(l => <smoothly-label hue={l.hue} description={l.description} shape={\"rectangle\"}>{l.name}</smoothly-label>)}\n\t\t\t\t</fieldset>\n\t\t\t</main>,\n\t\t]\n\t}\n}\nconst labels = [{\n\tname: \"2fa\",\n\thue: 120,\n\tdescription: \"User has two factor authentication enabled.\",\n},\n{\nname: \"expired\",\nhue: 240,\ndescription: \"User's password has expired.\",\n},\n{\nname: \"inactive\",\nhue: 60,\ndescription: \"User is inactive.\",\n}]\n","export class Rule {\n filter(value) {\n return value.filter(element => this.is(element));\n }\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n}\nconst creators = [\n criteria => (criteria instanceof Rule ? criteria : undefined),\n];\nexport function add(create) {\n creators.push(create);\n}\nlet always;\nexport function setFallback(fallback) {\n always = fallback;\n}\nexport function create(criteria) {\n let result;\n for (const c of creators) {\n result = c(criteria);\n if (result)\n break;\n }\n return result || always;\n}\n//# sourceMappingURL=Rule.js.map","import { Rule, setFallback } from \"./Rule\";\nexport class Always extends Rule {\n constructor() {\n super();\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Always\";\n }\n is(value) {\n return true;\n }\n toString() {\n return \"\";\n }\n}\nsetFallback(new Always());\n//# sourceMappingURL=Always.js.map","import { create, Rule } from \"./Rule\";\nexport class Any extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 50;\n this.class = \"Any\";\n }\n is(value) {\n return (value &&\n typeof value == \"object\" &&\n Object.getOwnPropertyNames(value).some(property => this.criteria.is(value[property]) || this.is(value[property])));\n }\n toString() {\n return this.criteria.stringify(this.precedence);\n }\n}\nexport function any(criteria, value) {\n const result = new Any(create(criteria));\n return value ? result.is(value) : result;\n}\n//# sourceMappingURL=Any.js.map","import { Any } from \"./Any\";\nimport { create, Rule } from \"./Rule\";\nexport class And extends Rule {\n constructor(rules) {\n super();\n this.precedence = 40;\n this.class = \"And\";\n this.rules = rules.reduce((r, e) => (e instanceof And ? [...r, ...e.rules] : [...r, e]), []);\n }\n is(value) {\n return this.rules.every(c => c.is(value));\n }\n toString() {\n return this.rules.map(c => c.stringify(this.precedence)).join(\" \");\n }\n generalize() {\n return new And(this.rules.map(r => (r.class == \"Property\" ? r : new Any(r))));\n }\n}\nexport function and(...criterias) {\n return new And(criterias.map(create));\n}\n//# sourceMappingURL=And.js.map","import { Rule } from \"./Rule\";\nexport var Criteria;\n(function (Criteria) {\n Criteria.is = isCriteria;\n})(Criteria || (Criteria = {}));\nexport function isCriteria(value, recursive = false) {\n return (typeof value == \"number\" ||\n typeof value == \"string\" ||\n value instanceof Rule ||\n (recursive &&\n typeof value == \"object\" &&\n value &&\n Object.values(value).every(value => Array.isArray(value) ? value.every(value => isCriteria(value, true)) : isCriteria(value, true))));\n}\n//# sourceMappingURL=Criteria.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Level;\n(function (Level) {\n Level[Level[\"Logging\"] = 0] = \"Logging\";\n Level[Level[\"Debug\"] = 1] = \"Debug\";\n Level[Level[\"Warning\"] = 2] = \"Warning\";\n Level[Level[\"Recoverable\"] = 3] = \"Recoverable\";\n Level[Level[\"Critical\"] = 4] = \"Critical\";\n})(Level = exports.Level || (exports.Level = {}));\n//# sourceMappingURL=Level.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Level_1 = require(\"./Level\");\nclass Message {\n constructor(description, level = Level_1.Level.Recoverable, type = \"unknown\", region) {\n this.description = description;\n this.level = level;\n this.type = type;\n this.region = region;\n }\n toString() {\n return Level_1.Level[this.level] + \": \" + this.type + \" error. \" + this.description + (this.region ? \" @ \" + this.region.toString() : \"\");\n }\n}\nexports.Message = Message;\n//# sourceMappingURL=Message.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Message_1 = require(\"./Message\");\nclass ConsoleHandler {\n raise(message, level, type, region) {\n if (!(message instanceof Message_1.Message))\n message = new Message_1.Message(message, level, type, region);\n console.error(message.toString());\n }\n}\nexports.ConsoleHandler = ConsoleHandler;\n//# sourceMappingURL=ConsoleHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Position {\n constructor(line, column) {\n this.line = line;\n this.column = column;\n }\n toString() {\n return \"Ln \" + this.line + \", Col \" + this.column;\n }\n}\nexports.Position = Position;\n//# sourceMappingURL=Position.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Position_1 = require(\"./Position\");\nclass Location extends Position_1.Position {\n constructor(resource, line, column) {\n super(line, column);\n this.resource = resource;\n }\n toString() {\n return this.resource.toString() + \" @ \" + super.toString();\n }\n}\nexports.Location = Location;\n//# sourceMappingURL=Location.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Region {\n constructor(resource, start, end, content) {\n this.resource = resource;\n this.start = start;\n this.end = end;\n this.content = content;\n }\n merge(other) { return other ? new Region(this.resource, this.start, other.end, this.content ? this.content : \"\" + other.content ? other.content : \"\") : this; }\n toString() {\n let result = this.resource.toString();\n if (this.start && this.end)\n result += \" (\" + this.start.toString() + \" - \" + this.end.toString() + \") \";\n if (this.content)\n result += this.content;\n return result;\n }\n}\nexports.Region = Region;\n//# sourceMappingURL=Region.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ConsoleHandler_1 = require(\"./ConsoleHandler\");\nexports.ConsoleHandler = ConsoleHandler_1.ConsoleHandler;\nvar Level_1 = require(\"./Level\");\nexports.Level = Level_1.Level;\nvar Location_1 = require(\"./Location\");\nexports.Location = Location_1.Location;\nvar Message_1 = require(\"./Message\");\nexports.Message = Message_1.Message;\nvar Position_1 = require(\"./Position\");\nexports.Position = Position_1.Position;\nvar Region_1 = require(\"./Region\");\nexports.Region = Region_1.Region;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass User {\n constructor(name, password) {\n this.name = name;\n this.password = password;\n }\n get isEmpty() {\n return !this.name && !this.password;\n }\n toString() {\n let result = \"\";\n if (this.name)\n result = this.name;\n if (this.password)\n result += \":\" + this.password;\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\":\", 2);\n result = new User(splitted[0], splitted[1]);\n }\n else\n result = new User();\n return result;\n }\n}\nexports.User = User;\n//# sourceMappingURL=User.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Endpoint {\n constructor(host = [], port) {\n this.host = host;\n this.port = port;\n }\n get isEmpty() {\n return this.host.length == 0 && !this.port;\n }\n toString() {\n let result = this.host.join(\".\");\n if (this.port)\n result += \":\" + this.port.toString();\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\":\", 2);\n result = new Endpoint(splitted[0].split(\".\"), splitted.length > 1 ? parseInt(splitted[1]) : undefined);\n }\n else\n result = new Endpoint();\n return result;\n }\n}\nexports.Endpoint = Endpoint;\n//# sourceMappingURL=Endpoint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst User_1 = require(\"./User\");\nconst Endpoint_1 = require(\"./Endpoint\");\nclass Authority {\n constructor(user = new User_1.User(), endpoint = new Endpoint_1.Endpoint()) {\n this.user = user;\n this.endpoint = endpoint;\n }\n get isEmpty() {\n return this.user.isEmpty && this.endpoint.isEmpty;\n }\n toString() {\n let result = \"\";\n if (!this.user.isEmpty)\n result = this.user.toString() + \"@\";\n if (!this.endpoint.isEmpty)\n result = result + this.endpoint.toString();\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\"@\", 2);\n result = new Authority(User_1.User.parse(splitted.length == 2 ? splitted.pop() : undefined), Endpoint_1.Endpoint.parse(splitted.pop()));\n }\n return result;\n }\n}\nexports.Authority = Authority;\n//# sourceMappingURL=Authority.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Authority_1 = require(\"./Authority\");\nclass Locator {\n constructor(scheme = [], authority = new Authority_1.Authority(), path = [], query = {}, fragment) {\n this.scheme = scheme;\n this.authority = authority;\n this.path = path;\n this.query = query;\n this.fragment = fragment;\n }\n get isRelative() {\n return this.path[0] == \".\" || this.path[0] == \"..\";\n }\n get isFolder() {\n return this.path[this.path.length - 1] == \"\";\n }\n get folder() {\n return this.isFolder ? this : new Locator(this.scheme, this.authority, this.path.filter((value, index) => index < this.path.length - 1), this.query, this.fragment);\n }\n get name() {\n return this.path[this.path.length - 1];\n }\n get extension() {\n const splitted = this.name.split(\".\");\n return splitted.length > 1 ? splitted[splitted.length - 1] : \"\";\n }\n createArray(value, count) {\n const result = [];\n while (count-- > 0)\n result.push(value);\n return result;\n }\n normalize() {\n let skip = 0;\n const path = this.path.reverse().filter((item, index) => {\n let r = false;\n if ((item == \"\" || item == \".\") && index < this.path.length - 1)\n r = false;\n else if (item == \"..\")\n skip++;\n else if (skip > 0)\n skip--;\n else\n r = true;\n return r;\n }).concat(this.createArray(\"..\", skip)).reverse();\n return new Locator(this.scheme, this.authority, path, this.query, this.fragment);\n }\n resolve(absolute) {\n return !absolute ? this : new Locator(this.scheme.length > 0 ? this.scheme : absolute.scheme, !this.authority.isEmpty ? this.authority : absolute.authority, this.isRelative ? absolute.folder.path.concat(this.path) : this.path, this.query, this.fragment).normalize();\n }\n appendPath(path) {\n return new Locator(this.scheme, this.authority, path instanceof Array ? [...this.path, ...path] : [...this.path, path], this.query, this.fragment);\n }\n toString() {\n let result = \"\";\n if (this.scheme.length > 0)\n result += this.scheme.join(\"+\") + \":\";\n if (!this.authority.isEmpty)\n result += \"//\" + this.authority.toString();\n else if (this.scheme.length > 0)\n result += \"//\";\n if (this.path) {\n let path = this.path.join(\"/\");\n if (path[0] != \".\" || result.length > 0)\n path = \"/\" + path;\n result += path;\n }\n if (Object.keys(this.query).length > 0)\n result += \"?\" + this.query.toString();\n if (this.fragment)\n result += \"#\" + this.fragment;\n return result;\n }\n static parse(data) {\n let result;\n switch (data) {\n case \"\":\n case null:\n case undefined:\n break;\n default:\n let hasAuthority = true;\n let scheme = [];\n let splitted = data.split(\"://\", 2);\n if (splitted.length > 1) {\n scheme = (splitted.shift() || \"\").split(\"+\");\n data = splitted.shift();\n }\n else if (data.slice(0, 2) == \"//\")\n data = data.slice(2);\n else\n hasAuthority = false;\n let index;\n let fragment;\n if (data && (index = data.lastIndexOf(\"#\")) > -1) {\n fragment = data.slice(index + 1);\n data = data.slice(0, index);\n }\n let query = {};\n if (data && (index = data.lastIndexOf(\"?\")) > -1) {\n query = new Object();\n data.slice(index + 1).split(\";\").forEach(element => {\n splitted = element.split(\"=\");\n const key = splitted.shift();\n const value = splitted.shift();\n if (key && value)\n query[key] = value;\n });\n data = data.slice(0, index);\n }\n let authority;\n let path = [];\n if (data) {\n splitted = data.split(\"/\");\n if (splitted.length > 0) {\n switch (splitted[0]) {\n case \".\":\n case \"..\":\n break;\n case \"\":\n splitted.shift();\n break;\n default:\n if (hasAuthority)\n authority = Authority_1.Authority.parse(splitted.shift());\n else\n splitted.unshift(\".\");\n break;\n }\n path = splitted;\n }\n }\n result = new Locator(scheme, authority, path, query, fragment);\n break;\n }\n return result;\n }\n}\nexports.Locator = Locator;\nLocator.empty = new Locator(undefined, undefined, undefined, undefined, undefined);\n//# sourceMappingURL=Locator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Authority_1 = require(\"./Authority\");\nexports.Authority = Authority_1.Authority;\nvar Endpoint_1 = require(\"./Endpoint\");\nexports.Endpoint = Endpoint_1.Endpoint;\nvar Locator_1 = require(\"./Locator\");\nexports.Locator = Locator_1.Locator;\nvar User_1 = require(\"./User\");\nexports.User = User_1.User;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Device {\n}\nexports.Device = Device;\n//# sourceMappingURL=Device.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Device_1 = require(\"./Device\");\nclass InDevice extends Device_1.Device {\n}\nexports.InDevice = InDevice;\n//# sourceMappingURL=InDevice.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst InDevice_1 = require(\"./InDevice\");\nclass Reader extends InDevice_1.InDevice {\n static addOpener(open, priority) {\n if (!priority)\n priority = 0;\n Reader.openers.push({ open, priority });\n Reader.openers = Reader.openers.sort((left, right) => right.priority - left.priority);\n }\n static open(locator) {\n let result;\n let i = 0;\n do\n result = Reader.openers[i++].open(locator);\n while (!result && i < Reader.openers.length);\n return result;\n }\n}\nexports.Reader = Reader;\nReader.openers = [];\n//# sourceMappingURL=Reader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Uri = require(\"../Uri\");\nconst Error = require(\"../Error\");\nconst Reader_1 = require(\"./Reader\");\nvar Reader_2 = require(\"./Reader\");\nexports.Reader = Reader_2.Reader;\nclass BufferedReader extends Reader_1.Reader {\n constructor(backend) {\n super();\n this.backend = backend;\n this.buffer = [];\n this.lastContent = \"\";\n this.lastMark = this.locationValue = this.backend.location;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return !!this.backend; }\n get opened() { return !!this.backend; }\n get isEmpty() { return (this.buffer.length == 0 || this.buffer[0].data == \"\\0\") && this.backend.isEmpty; }\n get resource() {\n const location = this.location;\n return location ? location.resource : Uri.Locator.empty;\n }\n get location() {\n return this.locationValue;\n }\n get region() {\n return new Error.Region(this.resource, this.lastMark, this.location, this.lastContent);\n }\n close() {\n return this.backend.close();\n }\n peek(length) {\n if (!length)\n length = 1;\n let next;\n while (length > this.buffer.length && (next = this.backend.read()))\n this.buffer.push({ data: next, location: this.backend.location });\n return this.buffer.length == 0 ? undefined : this.buffer.slice(0, length > this.buffer.length ? this.buffer.length : length).map(value => value.data).join(\"\");\n }\n read(length) {\n if (!length)\n length = 1;\n const result = this.peek(length);\n if (result && result.length > 0) {\n this.locationValue = this.buffer[result.length - 1].location;\n this.buffer.splice(0, result.length);\n this.lastContent += result;\n }\n return result;\n }\n peekIs(value, count) {\n let result;\n if (value)\n if (typeof (value) == \"string\") {\n const v = value;\n while (count && count-- > 0)\n value += v;\n result = this.peek(value.length) == value ? value : undefined;\n }\n else if (value.length > 0 && !(result = this.peekIs(value[0])) && value.length)\n result = this.peekIs(value.slice(1));\n return result;\n }\n readIf(value) {\n let result;\n if (value)\n if (typeof (value) == \"string\")\n result = this.peek(value.length) == value && this.read(value.length) || undefined;\n else if (value.length > 0 && !(result = this.readIf(value[0])) && value.length)\n result = this.readIf(value.slice(1));\n return result;\n }\n readAll() {\n let result = \"\";\n while (this.peek())\n result += this.read();\n return result != \"\" ? result : undefined;\n }\n mark() {\n const result = this.region;\n this.lastMark = this.location;\n this.lastContent = \"\";\n return result;\n }\n static create(backend) {\n return backend ? new BufferedReader(backend) : undefined;\n }\n}\nexports.BufferedReader = BufferedReader;\n//# sourceMappingURL=BufferedReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction close(fd) {\n return __awaiter(this, void 0, void 0, function* () { });\n}\nexports.close = close;\nfunction fsync(fd) {\n return __awaiter(this, void 0, void 0, function* () { });\n}\nexports.fsync = fsync;\nfunction open(path, flags, mode) {\n return __awaiter(this, void 0, void 0, function* () { return 0; });\n}\nexports.open = open;\nfunction write(fd, buffer, offset, encoding) {\n return __awaiter(this, void 0, void 0, function* () { return { bytesWritten: 0 }; });\n}\nexports.write = write;\nfunction lstatSync(path, options) { return { isDirectory: () => false }; }\nexports.lstatSync = lstatSync;\nfunction readdirSync(path) { return []; }\nexports.readdirSync = readdirSync;\nfunction readFileSync(path, encoding) { return \"\"; }\nexports.readFileSync = readFileSync;\n//# sourceMappingURL=fs.browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sep = \"/\";\nexports.sep = sep;\n//# sourceMappingURL=path.browser.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Error = require(\"../Error\");\nconst Uri = require(\"../Uri\");\nconst Reader_1 = require(\"./Reader\");\nclass StringReader extends Reader_1.Reader {\n constructor(content, resource) {\n super();\n this.content = content;\n this.resource = resource;\n this.tabSize = 2;\n this.count = 0;\n this.line = 1;\n this.column = 1;\n this.lastContent = \"\";\n this.readable = true;\n this.content += \"\\0\";\n this.lastPosition = this.location;\n }\n get opened() { return this.count + 1 >= this.content.length; }\n get isEmpty() { return this.opened; }\n get location() { return new Error.Location(this.resource, this.line, this.column); }\n get region() { return new Error.Region(this.resource, this.lastPosition, this.location, this.lastContent); }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n const result = !(yield this.isEmpty);\n if (result)\n this.count = this.content.length;\n return result;\n });\n }\n read() {\n let result;\n if (this.count < this.content.length)\n result = this.content.charAt(this.count);\n else if (this.count == this.content.length)\n result = undefined;\n this.count++;\n if (result) {\n switch (result) {\n case \"\\n\":\n this.line++;\n this.column = 1;\n break;\n case \"\\t\":\n this.column += this.tabSize;\n break;\n default:\n this.column++;\n break;\n }\n this.lastContent += result;\n }\n return result;\n }\n mark() {\n const result = this.region;\n this.lastPosition = this.location;\n this.lastContent = \"\";\n return result;\n }\n static create(content, resource) {\n return content != undefined ? new StringReader(content, resource || Uri.Locator.empty) : undefined;\n }\n}\nexports.StringReader = StringReader;\n//# sourceMappingURL=StringReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Uri = require(\"../Uri\");\nconst Reader_1 = require(\"./Reader\");\nconst StringReader_1 = require(\"./StringReader\");\nclass FileReader extends Reader_1.Reader {\n constructor(backend) {\n super();\n this.backend = backend;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return this.backend.opened; }\n get isEmpty() { return this.backend.isEmpty; }\n get resource() { return this.backend ? this.backend.resource : Uri.Locator.empty; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n return this.backend.close();\n }\n read() { return this.backend.read(); }\n mark() { return this.backend.mark(); }\n static open(resource) {\n let backend;\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\"))\n try {\n backend = StringReader_1.StringReader.create(fs.readFileSync((resource.isRelative ? \"\" : path.sep) + resource.path.join(path.sep), \"utf-8\"), resource);\n }\n catch (error) {\n console.log(`Failed to open file: ${resource.toString()}`);\n }\n return backend ? new FileReader(backend) : undefined;\n }\n}\nexports.FileReader = FileReader;\nReader_1.Reader.addOpener(p => FileReader.open(p), 10);\n//# sourceMappingURL=FileReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Uri = require(\"../Uri\");\nconst Error = require(\"../Error\");\nconst Reader_1 = require(\"./Reader\");\nconst FileReader_1 = require(\"./FileReader\");\nclass FolderReader extends Reader_1.Reader {\n constructor(files) {\n super();\n this.files = files;\n this.tabSizeValue = 2;\n this.lastLocation = new Error.Location(Uri.Locator.empty, 0, 0);\n }\n get tabSize() { return this.tabSizeValue; }\n set tabSize(size) {\n this.tabSizeValue = size;\n if (this.current)\n this.current.tabSize = size;\n }\n get readable() { return this.current != undefined && this.current.readable || this.files.length > 0; }\n get opened() { return this.current != undefined || this.files.length > 0; }\n get isEmpty() { return this.files.length == 0 && (!this.current || this.current.isEmpty); }\n get resource() { return this.current ? this.current.resource : this.lastLocation.resource; }\n get location() { return this.current ? this.current.location : this.lastLocation; }\n get region() { return this.current ? this.current.region : new Error.Region(this.resource); }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.current != undefined && (yield this.current.close());\n });\n }\n read() {\n let result;\n if (!this.current && this.files.length > 0) {\n this.current = FileReader_1.FileReader.open(this.files.shift());\n this.current.tabSize = this.tabSize;\n }\n if (this.current) {\n result = this.current.read();\n if (result == undefined || result == \"\\0\") {\n this.current.close();\n this.current = undefined;\n }\n }\n this.lastLocation = this.location;\n return result;\n }\n mark() { return this.current ? this.current.mark() : new Error.Region(this.resource); }\n static getFiles(folder, filetype, ignoreFiles = []) {\n let result = [];\n const files = fs.readdirSync(folder);\n files.forEach(file => {\n const filename = folder + path.sep + file;\n if (ignoreFiles.indexOf(filename) == -1) {\n if (fs.lstatSync(filename).isDirectory())\n result = result.concat(FolderReader.getFiles(filename, filetype, ignoreFiles));\n else if (file.length > filetype.length && file.lastIndexOf(filetype, file.length - filetype.length) === file.length - filetype.length)\n result.push(filename);\n }\n });\n return result;\n }\n static open(resource) {\n let files;\n try {\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\") && resource.isFolder || resource.name.match(\"*\"))\n files = FolderReader.getFiles((resource.isRelative ? \"\" : path.sep) + resource.folder.path.join(path.sep), resource.extension);\n }\n catch (error) {\n }\n return files ? new FolderReader(files.map(f => new Uri.Locator([\"file\"], undefined, f.split(path.sep)))) : undefined;\n }\n}\nexports.FolderReader = FolderReader;\nReader_1.Reader.addOpener((resource) => FolderReader.open(resource), 0);\n//# sourceMappingURL=FolderReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction* generate(next) {\n let result;\n while ((result = next()) != undefined)\n yield result;\n}\nfunction isIterator(item) {\n return item.next instanceof Function;\n}\nfunction* merge(left, right) {\n let result;\n while (!(result = left.next()).done)\n yield result.value;\n if (isIterator(right))\n while (!(result = right.next()).done)\n yield result.value;\n else\n yield right;\n}\nclass Enumerator {\n constructor(backend) {\n this.iterator = backend instanceof Function ? generate(backend) : backend;\n }\n get length() {\n let result = 0;\n while (!this.next().done)\n result++;\n return result;\n }\n get last() {\n return this.nextValue && !this.nextValue.done ? this.nextValue.value : undefined;\n }\n fetch() {\n const result = this.next();\n return result.done ? undefined : result.value;\n }\n next(value) {\n return this.nextValue = this.iterator.next(value);\n }\n append(item) {\n return new Enumerator(merge(this, item));\n }\n map(mapping) {\n return new Enumerator(() => {\n const item = this.fetch();\n return (item != undefined) ? mapping(item) : undefined;\n });\n }\n reduce(reduce, result) {\n const item = this.fetch();\n return item ? this.reduce(reduce, reduce(result, item)) : result;\n }\n apply(apply) {\n const item = this.fetch();\n if (item) {\n apply(item);\n this.apply(apply);\n }\n }\n filter(filter) {\n return new Enumerator(() => {\n let item;\n do\n item = this.fetch();\n while (item != undefined && !filter(item));\n return item;\n });\n }\n toArray() {\n const item = this.fetch();\n let result;\n if (!item)\n result = [];\n else {\n result = this.toArray();\n result.unshift(item);\n }\n return result;\n }\n static from(backend) {\n return new Enumerator(backend);\n }\n}\nexports.Enumerator = Enumerator;\nEnumerator.empty = Enumerator.from(() => undefined);\n//# sourceMappingURL=Enumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nfunction isIterable(other) {\n return other == null ? false : typeof other[Symbol.iterator] === \"function\";\n}\nclass Enumerable {\n constructor(get) {\n this.get = get;\n }\n get length() {\n return this.get().length;\n }\n get first() {\n return this.get().fetch();\n }\n get last() {\n return this.get().last;\n }\n getEnumerator() {\n return new Enumerator_1.Enumerator(this.get());\n }\n [Symbol.iterator]() {\n return this.getEnumerator();\n }\n append(item) {\n return new Enumerable(() => this.get().append(item));\n }\n map(mapping) {\n return new Enumerable(() => this.get().map(mapping));\n }\n reduce(reduce, result) {\n return this.get().reduce(reduce, result);\n }\n apply(apply) {\n this.get().apply(apply);\n }\n filter(filter) {\n return new Enumerable(() => this.get().filter(filter));\n }\n toArray() {\n return this.getEnumerator().toArray();\n }\n static from(get) {\n return isIterable(get) ? new Enumerable(() => new Enumerator_1.Enumerator(get[Symbol.iterator]())) : new Enumerable(() => {\n const r = get();\n return r instanceof Enumerator_1.Enumerator ? r : new Enumerator_1.Enumerator(r);\n });\n }\n}\nexports.Enumerable = Enumerable;\nEnumerable.empty = Enumerable.from([]);\n//# sourceMappingURL=Enumerable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nclass ArrayEnumerator extends Enumerator_1.Enumerator {\n constructor(backend) {\n super(() => this.position < this.backend.length ? this.backend[this.position++] : undefined);\n this.backend = backend;\n this.position = 0;\n }\n}\nexports.ArrayEnumerator = ArrayEnumerator;\n//# sourceMappingURL=ArrayEnumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nclass BufferedEnumerator extends Enumerator_1.Enumerator {\n constructor(backend) {\n super(() => {\n const result = this.peek(0);\n if (this.buffer.length > 0)\n this.buffer.shift();\n return result;\n });\n this.backend = backend;\n this.buffer = [];\n }\n peek(position) {\n if (!position)\n position = 0;\n let next;\n while (position > this.buffer.length - 1 && (next = this.backend.fetch()))\n this.buffer.push(next);\n return position > this.buffer.length - 1 ? undefined : this.buffer[position];\n }\n}\nexports.BufferedEnumerator = BufferedEnumerator;\n//# sourceMappingURL=BufferedEnumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass String {\n static padLeft(value, paddingCharacter, width) {\n return String.pad(value, paddingCharacter, width, true);\n }\n static padRight(value, paddingCharacter, width) {\n return String.pad(value, paddingCharacter, width, false);\n }\n static pad(value, paddingCharacter, width, padLeft) {\n let padding = \"\";\n const count = width - value.length;\n for (let i = 0; i < count; i++)\n padding += paddingCharacter;\n return padLeft ? padding + value : value + padding;\n }\n}\nexports.String = String;\n//# sourceMappingURL=String.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Enumerator_1 = require(\"./Enumerator\");\nexports.Enumerator = Enumerator_1.Enumerator;\nvar Enumerable_1 = require(\"./Enumerable\");\nexports.Enumerable = Enumerable_1.Enumerable;\nvar ArrayEnumerator_1 = require(\"./ArrayEnumerator\");\nexports.ArrayEnumerator = ArrayEnumerator_1.ArrayEnumerator;\nvar BufferedEnumerator_1 = require(\"./BufferedEnumerator\");\nexports.BufferedEnumerator = BufferedEnumerator_1.BufferedEnumerator;\nvar String_1 = require(\"./String\");\nexports.String = String_1.String;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Device_1 = require(\"./Device\");\nclass OutDevice extends Device_1.Device {\n}\nexports.OutDevice = OutDevice;\n//# sourceMappingURL=OutDevice.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Uri = require(\"../Uri\");\nconst Utilities_1 = require(\"../Utilities\");\nconst OutDevice_1 = require(\"./OutDevice\");\nclass Writer extends OutDevice_1.OutDevice {\n constructor() {\n super(...arguments);\n this.newLineSymbol = \"\\n\";\n }\n write(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return message instanceof Utilities_1.Enumerator ? this.writeImplementation(message) :\n message instanceof Array ? this.writeImplementation(new Utilities_1.ArrayEnumerator(message)) :\n this.writeImplementation(new Utilities_1.ArrayEnumerator([message]));\n });\n }\n writeLine(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return message instanceof Utilities_1.Enumerator ? this.writeImplementation(message.append(this.newLineSymbol)) :\n message instanceof Array ? this.writeImplementation(new Utilities_1.ArrayEnumerator([...message, this.newLineSymbol])) :\n message ? this.writeImplementation(new Utilities_1.ArrayEnumerator([message, this.newLineSymbol])) :\n this.writeImplementation(new Utilities_1.ArrayEnumerator([this.newLineSymbol]));\n });\n }\n static addOpener(open, priority) {\n if (!priority)\n priority = 0;\n Writer.openers.push({ open, priority });\n Writer.openers = Writer.openers.sort((left, right) => right.priority - left.priority);\n }\n static open(resource) {\n return __awaiter(this, void 0, void 0, function* () {\n let result;\n if (typeof (resource) == \"string\") {\n const r = Uri.Locator.parse(resource);\n result = r ? yield Writer.open(r) : undefined;\n }\n else {\n let i = 0;\n do\n result = yield Writer.openers[i++].open(resource);\n while (!result && i < Writer.openers.length);\n }\n return result;\n });\n }\n}\nexports.Writer = Writer;\nWriter.openers = [];\n//# sourceMappingURL=Writer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Writer_1 = require(\"./Writer\");\nclass Indenter extends Writer_1.Writer {\n constructor(backend) {\n super();\n this.backend = backend;\n this.autoFlush = true;\n this.indentionSymbol = \"\\t\";\n this.indentionCount = 0;\n this.indentNext = false;\n }\n get resource() { return this.backend.resource; }\n get opened() { return this.backend.opened; }\n get writable() { return this.backend.writable; }\n flush() {\n return this.backend.flush();\n }\n close() {\n return this.backend.close();\n }\n increase() {\n this.indentionCount++;\n return true;\n }\n decrease() {\n this.indentionCount--;\n return this.indentionCount >= 0;\n }\n getIndention() {\n return this.indentionSymbol.repeat(this.indentionCount);\n }\n writeImplementation(buffer) {\n const result = [];\n let item;\n let next = buffer.fetch();\n if (next)\n do {\n item = next;\n next = buffer.fetch();\n if (this.indentNext)\n item = this.getIndention() + item;\n this.indentNext = item.endsWith(this.newLineSymbol);\n item = item.replace(this.newLineSymbol, this.newLineSymbol + this.getIndention());\n if (this.indentNext)\n item = item.substring(0, item.length - this.indentionCount * this.indentionSymbol.length);\n result.push(this.backend.write(item));\n } while (next);\n return Promise.all(result).then(r => r.reduce((previous, current) => previous && current, true));\n }\n}\nexports.Indenter = Indenter;\n//# sourceMappingURL=Indenter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass PrefixReader extends Reader_1.Reader {\n constructor(backend, prefix) {\n super();\n this.prefix = prefix;\n this.done = false;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return this.backend.opened; }\n get isEmpty() { return this.done || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n return this.backend.close();\n }\n read() {\n let result;\n if (!this.done) {\n result = this.backend.read();\n this.done = result == \"\\n\" && !this.backend.readIf(this.prefix) && !this.backend.peekIs(\"\\n\");\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, prefix) {\n return backend && prefix ? new PrefixReader(backend, prefix) : backend;\n }\n}\nexports.PrefixReader = PrefixReader;\n//# sourceMappingURL=PrefixReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Writer_1 = require(\"./Writer\");\nclass FileWriter extends Writer_1.Writer {\n constructor(resource, descriptor) {\n super();\n this.resource = resource;\n this.descriptor = descriptor;\n this.autoFlush = false;\n }\n get opened() { return this.descriptor > 0; }\n get writable() { return this.descriptor > 0; }\n flush() {\n return __awaiter(this, void 0, void 0, function* () {\n let result = true;\n try {\n yield fs.fsync(this.descriptor);\n }\n catch (error) {\n result = false;\n }\n return result;\n });\n }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n let result = this.opened;\n if (result) {\n try {\n yield fs.close(this.descriptor);\n }\n catch (error) {\n result = false;\n }\n this.descriptor = 0;\n }\n return result;\n });\n }\n writeImplementation(buffer) {\n return __awaiter(this, void 0, void 0, function* () {\n let result = true;\n const content = Buffer.from(buffer.reduce((r, item) => r + item, \"\"));\n try {\n const r = yield fs.write(this.descriptor, content, 0, \"utf8\");\n result = r.bytesWritten == content.length;\n }\n catch (error) {\n result = false;\n }\n return result && (!this.autoFlush || (yield this.flush()));\n });\n }\n static open(resource) {\n return __awaiter(this, void 0, void 0, function* () {\n let backend;\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\"))\n try {\n backend = yield fs.open((resource.isRelative ? \"\" : path.sep) + resource.path.join(path.sep), \"w\");\n }\n catch (error) {\n backend = undefined;\n }\n return backend ? new FileWriter(resource, backend) : undefined;\n });\n }\n}\nexports.FileWriter = FileWriter;\nWriter_1.Writer.addOpener(FileWriter.open);\n//# sourceMappingURL=FileWriter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass TillReader extends Reader_1.Reader {\n constructor(backend, endMark) {\n super();\n this.endMark = endMark;\n this.done = false;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n this.done = this.backend.peekIs(this.endMark) != undefined;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return !this.done && this.backend.opened; }\n get isEmpty() { return this.done || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n const result = !this.done;\n if (result)\n this.done = true;\n return Promise.resolve(result);\n }\n read() {\n let result;\n if (!this.done) {\n result = this.backend.read();\n this.done = this.backend.peekIs(this.endMark) != undefined;\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, endMark) {\n return backend && endMark ? new TillReader(backend, endMark) : backend;\n }\n}\nexports.TillReader = TillReader;\n//# sourceMappingURL=TillReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass UntilReader extends Reader_1.Reader {\n constructor(backend, endMark) {\n super();\n this.endMark = endMark;\n this.done = -1;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n const peeked = this.backend.peekIs(this.endMark);\n if (peeked)\n this.done = peeked.length;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return !this.done && this.backend.opened; }\n get isEmpty() { return this.done == 0 || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n const result = this.done > 0;\n if (result)\n this.done = 0;\n return Promise.resolve(result);\n }\n read() {\n let result;\n if (this.done != 0) {\n result = this.backend.read();\n let peeked;\n if (this.done > 0)\n this.done--;\n else if (peeked = this.backend.peekIs(this.endMark))\n this.done = peeked.length;\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, endMark) {\n return backend && endMark ? new UntilReader(backend, endMark) : backend;\n }\n}\nexports.UntilReader = UntilReader;\n//# sourceMappingURL=UntilReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BufferedReader_1 = require(\"./BufferedReader\");\nexports.BufferedReader = BufferedReader_1.BufferedReader;\nvar Device_1 = require(\"./Device\");\nexports.Device = Device_1.Device;\nvar FileReader_1 = require(\"./FileReader\");\nexports.FileReader = FileReader_1.FileReader;\nvar FolderReader_1 = require(\"./FolderReader\");\nexports.FolderReader = FolderReader_1.FolderReader;\nvar Indenter_1 = require(\"./Indenter\");\nexports.Indenter = Indenter_1.Indenter;\nvar InDevice_1 = require(\"./InDevice\");\nexports.InDevice = InDevice_1.InDevice;\nvar OutDevice_1 = require(\"./OutDevice\");\nexports.OutDevice = OutDevice_1.OutDevice;\nvar PrefixReader_1 = require(\"./PrefixReader\");\nexports.PrefixReader = PrefixReader_1.PrefixReader;\nvar Reader_1 = require(\"./Reader\");\nexports.Reader = Reader_1.Reader;\nvar StringReader_1 = require(\"./StringReader\");\nexports.StringReader = StringReader_1.StringReader;\nvar FileWriter_1 = require(\"./FileWriter\");\nexports.FileWriter = FileWriter_1.FileWriter;\nvar TillReader_1 = require(\"./TillReader\");\nexports.TillReader = TillReader_1.TillReader;\nvar UntilReader_1 = require(\"./UntilReader\");\nexports.UntilReader = UntilReader_1.UntilReader;\nvar Writer_1 = require(\"./Writer\");\nexports.Writer = Writer_1.Writer;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Error = require(\"./Error\");\nexports.Error = Error;\nconst IO = require(\"./IO\");\nexports.IO = IO;\nconst Uri = require(\"./Uri\");\nexports.Uri = Uri;\nconst Utilities = require(\"./Utilities\");\nexports.Utilities = Utilities;\n//# sourceMappingURL=index.js.map","import { Error, IO } from \"@cogneco/mend\";\nexport class Source extends IO.BufferedReader {\n constructor(reader, errorHandler) {\n super(typeof reader == \"string\" ? IO.StringReader.create(reader) : reader);\n this.errorHandler = errorHandler;\n }\n raise(message, level, type = \"lexical\", region) {\n if (!(message instanceof Error.Message)) {\n if (!level)\n level = Error.Level.Critical;\n if (!region)\n region = this.region;\n message = new Error.Message(message, level, type, region);\n }\n if (this.errorHandler)\n this.errorHandler.raise(message);\n }\n requirePrefix(prefix) {\n return new Source(new IO.PrefixReader(this, prefix), this.errorHandler);\n }\n till(endMark) {\n return new Source(IO.TillReader.create(this, endMark), this.errorHandler);\n }\n until(endMark) {\n return new Source(IO.UntilReader.create(this, endMark), this.errorHandler);\n }\n peekIsSymbol(symbols) {\n return (this.peekIs(symbols ?? [\"!\", \"(\", \")\", \"[\", \"]\", \"|\", \"*\", \":\", \".\", \"<=\", \">=\", \"<\", \">\", \" * \", \" + \", \" - \", \" / \", \",\"])?.length ?? false);\n }\n peekIsWhitespace() {\n return !!this.peekIs([\" \", \"\\n\", \"\\t\"]);\n }\n}\n//# sourceMappingURL=Source.js.map","import { Utilities } from \"@cogneco/mend\";\nimport { Source } from \"./Source\";\nfunction tokenize(reader, errorHandler, symbols) {\n const source = new Source(reader, errorHandler);\n return new Utilities.Enumerator(() => {\n let result;\n let peekSymbolLength = 1;\n if (!source.isEmpty) {\n while (source.peekIsWhitespace() && !source.peekIsSymbol(symbols))\n source.read();\n if ((peekSymbolLength = source.peekIsSymbol(symbols)))\n result = { value: source.read(peekSymbolLength) || \"\", region: source.mark() };\n else {\n let value = \"\";\n while (!source.isEmpty && !source.peekIsWhitespace() && !source.peekIsSymbol(symbols))\n value += source.read();\n if (value)\n result = { value, region: source.mark() };\n }\n }\n return result;\n });\n}\nexport { Source, tokenize };\n//# sourceMappingURL=index.js.map","import { tokenize } from \"../lexer\";\nexport class Base {\n tokenize(input) {\n return tokenize(input, undefined, [\n \"!\",\n \"(\",\n \")\",\n \"[\",\n \"]\",\n \"|\",\n \" | \",\n \"*\",\n \":\",\n \".\",\n \"<=\",\n \">=\",\n \"<\",\n \">\",\n \" * \",\n \" + \",\n \"+\",\n \" - \",\n \"-\",\n \" / \",\n ])\n .map(t => ({ value: t.value }))\n .toArray();\n }\n}\n//# sourceMappingURL=Base.js.map","import { Base } from \"./Base\";\nexport class Array extends Base {\n constructor(input) {\n super();\n this.class = \"array\";\n this.array = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return Array.completor\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []);\n }\n isType(value) {\n return global.Array.isArray(value);\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static is(value) {\n return value instanceof Array;\n }\n}\nArray.completor = [];\n//# sourceMappingURL=Array.js.map","export var Cursor;\n(function (Cursor) {\n function is(value) {\n return typeof value == \"object\" && typeof value.start == \"number\" && typeof value.end == \"number\";\n }\n Cursor.is = is;\n})(Cursor || (Cursor = {}));\n//# sourceMappingURL=Cursor.js.map","import { Cursor } from \"./Cursor\";\nexport var Completion;\n(function (Completion) {\n function stringify(completions) {\n return completions.map(c => typeof c.cursor == \"number\"\n ? c.value.slice(0, c.cursor) + \"_\" + c.value.slice(c.cursor, c.value.length)\n : c.value + \"_\");\n }\n Completion.stringify = stringify;\n function prepend(prefix, completion, suffix) {\n return Array.isArray(completion)\n ? completion.map(c => prepend(prefix, c, suffix))\n : {\n value: prefix + completion.value + (suffix ?? \"\"),\n cursor: typeof completion?.cursor == \"number\"\n ? completion?.cursor + prefix.length\n : Cursor.is(completion.cursor)\n ? { start: completion.cursor.start + prefix.length, end: completion.cursor.end + prefix.length }\n : completion.value.length + prefix.length,\n suggestion: completion.suggestion,\n };\n }\n Completion.prepend = prepend;\n})(Completion || (Completion = {}));\n//# sourceMappingURL=Completion.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class Boolean extends SType {\n constructor() {\n super();\n this.class = \"boolean\";\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n const result = type\n ? Boolean.literals.filter(c => c.value.startsWith(tokens[0]?.value ?? \"\"))\n : tokens[0]?.value == \":\"\n ? Completion.prepend(\":\", Boolean.literals.filter(c => c.value.startsWith(tokens[1]?.value ?? \"\")))\n : [];\n return [\n ...(result ?? []),\n ...(type ? [] : Boolean.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return typeof value == \"boolean\";\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n}\nBoolean.literals = [\n { value: \"true\", suggestion: { value: \"true\" } },\n { value: \"false\", suggestion: { value: \"false\" } },\n];\nBoolean.completor = [];\n//# sourceMappingURL=Boolean.js.map","import { Completion } from \"./Completion\";\nexport var Completor;\n(function (Completor) {\n function functions(tokens, argument, completion) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens.length <= 3 &&\n tokens[0].value == \":\" &&\n completion.value.startsWith(tokens[1]?.value ?? \"\") &&\n (tokens[2]?.value ?? \"(\") == \"(\"\n ? Completion.prepend(\":\", [completion])\n : tokens.length <= 4 &&\n tokens.slice(0, 4).reduce((string, token) => string + token.value, \"\") == \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(), \")\")\n : tokens.length == 5 &&\n tokens.slice(0, 3).reduce((string, token) => string + token.value, \"\") + tokens[4].value ==\n \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(tokens.slice(3, tokens.length - 1)), \")\")\n : tokens.length > 5 &&\n tokens.slice(0, 3).reduce((string, token) => string + token.value, \"\") + tokens[tokens.length - 1].value ==\n \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(tokens.slice(3, tokens.length - 1)), \")\")\n : [];\n }\n Completor.functions = functions;\n function expressions(tokens, argument, completion) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens[0].value != \":\"\n ? []\n : tokens.length == 1\n ? Completion.prepend(\":\", [completion])\n : Completion.prepend(\":\", argument(tokens.slice(1)));\n }\n Completor.expressions = expressions;\n function operators(tokens, argument, completion) {\n return tokens.length >= 1 && tokens[0].value == completion.value\n ? Completion.prepend(completion.value, argument(tokens.slice(1)))\n : tokens.length == 0 ||\n (tokens.length == 1 && completion.value.startsWith(tokens[0].value)) ||\n tokens[0].value == completion.value.replace(/ /g, \"\")\n ? [completion]\n : [];\n }\n Completor.operators = operators;\n})(Completor || (Completor = {}));\n//# sourceMappingURL=Completor.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class Number extends SType {\n constructor(input) {\n super();\n this.input = input;\n this.class = \"number\";\n if (input)\n this.value = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return [\n ...(tokens.length > 0 && tokens[0].value == \":\" && baseObject\n ? Completion.prepend(\":\", baseObject.complete(tokens.slice(1), undefined, this))\n : baseObject && tokens.length >= 0 && type\n ? Completion.prepend(\" \", baseObject?.complete(tokens, undefined, undefined))\n : []),\n ...(type ? Number.completorArgument : Number.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return isNaN(+value) ? false : true;\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static addArgument(...pattern) {\n this.completorArgument.push(...pattern);\n }\n static is(value) {\n return value instanceof Number || !global.Number.isNaN(value);\n }\n}\nNumber.completor = [];\nNumber.completorArgument = [];\n//# sourceMappingURL=Number.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class TObject extends SType {\n constructor(properties) {\n super();\n this.properties = properties;\n this.class = \"object\";\n this.completions = Object.keys(this.properties).map(p => ({ value: p, suggestion: { value: p } }));\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n let result;\n const filtered = this.filterByType(type);\n if (!baseObject) {\n const matched = tokens.length > 0 ? this.match(tokens[0], filtered) : undefined;\n if (matched)\n result =\n tokens.length >= 1\n ? Completion.prepend(matched.value, this.properties[matched.value].complete(tokens.slice(1), this, type))\n : [];\n else if (type && tokens.length > 2 && type.isType(tokens[0].value + tokens[1].value + tokens[2].value))\n result = Completion.prepend(tokens[0].value + tokens[1].value + tokens[2].value, type.complete(tokens.slice(3), this, type));\n else if (type && tokens.length > 0 && type.isType(tokens[0].value))\n result = Completion.prepend(tokens[0].value, type.complete(tokens.slice(1), this, type));\n else {\n let found;\n result =\n tokens.length == 0\n ? [...this.addDot(filtered, type), ...(type?.class == \"number\" ? [] : TObject.wildcard)]\n : tokens.length == 1 && (found = TObject.wildcard.find(w => w.value == tokens[0].value))\n ? Completion.prepend(found.value, this.completions, type ? \".\" : \"\")\n : tokens.length >= 1 && (found = TObject.wildcard.find(w => w.value == tokens[0].value))\n ? Completion.prepend(found.value, this.complete(tokens.slice(1)))\n : this.addDot(this.partial(tokens[0], filtered), type);\n }\n }\n else\n result =\n tokens.length == 0\n ? [{ value: \".\", suggestion: { value: \".\" } }]\n : tokens[0].value != \".\"\n ? []\n : tokens.length == 1\n ? Completion.prepend(\".\", this.addDot(filtered, type))\n : this.properties[tokens[1].value]\n ? Completion.prepend(\".\" + tokens[1].value, this.properties[tokens[1].value].complete(tokens.slice(2), baseObject, type))\n : Completion.prepend(\".\", this.addDot(this.partial(tokens[1], filtered), type));\n return [\n ...result.reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ...TObject.completor.flatMap(p => p(tokens, this, baseObject)),\n ];\n }\n filterByType(type) {\n return type\n ? this.completions.filter(c => this.properties[c.value].class == type.class ||\n (this.properties[c.value].class == \"object\"\n ? this.properties[c.value].filterByType(type).length > 0\n : false))\n : this.completions;\n }\n addDot(completions, type) {\n return !completions\n ? []\n : type\n ? completions.map(c => this.properties[c.value].class == \"object\"\n ? { value: c.value + \".\", suggestion: { value: c.suggestion?.value + \".\" } }\n : c)\n : completions;\n }\n partial(token, completions) {\n const result = completions.filter(c => c.value.startsWith(token.value));\n return result && result.length > 0 ? result : undefined;\n }\n match(token, completions) {\n const result = completions.filter(c => c.value == token.value);\n return result && result.length > 0 ? result[0] : undefined;\n }\n isType(value) {\n return false;\n }\n static add(...completor) {\n this.completor.push(...completor);\n }\n}\nTObject.wildcard = [\n { value: \"!\", cursor: 1, suggestion: { value: \"!\", description: \"not\" } },\n];\nTObject.completor = [];\n//# sourceMappingURL=Object.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class String extends SType {\n constructor(input) {\n super();\n this.class = \"string\";\n if (input)\n this.value = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n let result;\n if (type)\n result = this.value?.startsWith(tokens[0]?.value ?? \"\")\n ? [{ value: this.value, suggestion: { value: this.value } }]\n : undefined;\n else\n result =\n tokens.length == 0 || tokens[0].value != \":\"\n ? undefined\n : this.value?.startsWith(tokens[1]?.value ?? \"\")\n ? [Completion.prepend(\":\", { value: this.value, suggestion: { value: this.value } })]\n : undefined;\n return [\n ...(result ?? []),\n ...(type ? [] : String.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return typeof value.value == \"string\";\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static is(value) {\n return value instanceof String;\n }\n}\nString.completor = [];\n//# sourceMappingURL=String.js.map","import { Base as SType } from \"./Base\";\nexport class Union extends SType {\n constructor(type) {\n super();\n this.type = type;\n this.class = \"union\";\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return this.type ? this.type?.flatMap(t => t?.complete(tokens, baseObject, type) ?? []) : [];\n }\n isType(value) {\n return value instanceof Union;\n }\n static is(value) {\n return value instanceof Union;\n }\n}\n//# sourceMappingURL=Union.js.map","import { Array as TArray } from \"./Array\";\nimport { Boolean as TBoolean } from \"./Boolean\";\nimport { Completion as TCompletion } from \"./Completion\";\nimport { Completor as TCompletor } from \"./Completor\";\nimport { Number as TNumber } from \"./Number\";\nimport { TObject } from \"./Object\";\nimport { String as TString } from \"./String\";\nimport { Union as TUnion } from \"./Union\";\nexport var Type;\n(function (Type) {\n function complete(template, input) {\n const completions = template.complete(input);\n return completions\n .filter(c => !input.includes(c.value) && c.suggestion?.value)\n .map(c => ({\n full: c.value,\n cursor: c?.cursor ?? c.value.length,\n addon: c?.suggestion?.value,\n description: c?.suggestion?.description,\n }));\n }\n Type.complete = complete;\n function convert(value) {\n let result;\n switch (typeof value) {\n case \"object\":\n result = global.Array.isArray(value)\n ? new TArray(value.map(e => convert(e)))\n : new TObject(global.Object.entries(value).reduce((r, c) => {\n return { ...r, [c[0]]: convert(c[1]) };\n }, {}));\n break;\n case \"string\":\n result = new TString(value);\n break;\n default:\n result = new TNumber(value);\n break;\n }\n return result;\n }\n Type.convert = convert;\n Type.Array = TArray;\n Type.Boolean = TBoolean;\n Type.Completion = TCompletion;\n Type.Object = TObject;\n Type.String = TString;\n Type.Number = TNumber;\n Type.Union = TUnion;\n Type.Completor = TCompletor;\n})(Type || (Type = {}));\n//# sourceMappingURL=index.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class EndsWith extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"EndsWith\";\n }\n is(value) {\n return typeof value == \"string\" && value.endsWith(this.needle);\n }\n toString() {\n return `*${this.needle}`;\n }\n}\nexport function endsWith(needle, value) {\n const result = new EndsWith(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens || (tokens[0].value == \"*\" && string.value && string.value.endsWith(tokens[1]?.value ?? \"\"))\n ? [Type.Completion.prepend(\"*\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } })]\n : [];\n }, { value: \"*\", suggestion: { value: \"*\", description: \"endswith\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=EndsWith.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Every extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 100;\n this.class = \"Every\";\n }\n is(value) {\n return Array.isArray(value) && value.every(v => this.criteria.is(v));\n }\n toString() {\n return `every(${this.criteria.toString()})`;\n }\n}\nexport function every(criteria, value) {\n const result = new Every(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type) {\n const arrayArgumentor = (tokens) => type.array.some(Type.String.is) && tokens\n ? type.array\n .filter(Type.String.is)\n .map(p => p.complete([{ value: \":\" }, ...tokens]))\n .reduce((result, element) => Array.isArray(element) ? result.concat(element) : element ? [...result, element] : result, [])\n : !tokens && type.array.some(Type.String.is)\n ? type.array.filter(Type.String.is).map(e => ({ value: e?.value ?? \"\" }))\n : type.array.some(Type.Number.is) && tokens\n ? type.array\n .filter(Type.Number.is)\n .map(e => e.complete(tokens))\n .reduce((result, element) => Array.isArray(element) ? result.concat(element) : element ? [...result, element] : result, [])\n : !tokens && type.array.some(Type.Number.is)\n ? type.array.filter(Type.Number.is).map(e => ({ value: (e?.value ?? \"\").toString() }))\n : [];\n return Completor.functions(tokens, arrayArgumentor, {\n value: \"every()\",\n cursor: 6,\n suggestion: { value: \"every()\" },\n });\n}\nType.Array.add(complete);\n//# sourceMappingURL=Every.js.map","import { Rule } from \"./Rule\";\nexport class FunctionCall extends Rule {\n constructor(identifier, argument, definition) {\n super();\n this.identifier = identifier;\n this.argument = argument;\n this.definition = definition;\n this.precedence = 85;\n this.class = \"FunctionCall\";\n }\n is(value) {\n return this.definition?.is(value) ?? true;\n }\n toString() {\n return `${this.identifier}(${this.argument.join(\", \")})`;\n }\n}\nexport function isType(value) {\n return typeof value == \"object\" && value?.class == \"FunctionCall\";\n}\n//# sourceMappingURL=FunctionCall.js.map","export class Expression {\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n}\n//# sourceMappingURL=Expression.js.map","import { Expression } from \"./Expression\";\nexport class Value extends Expression {\n constructor(value, name) {\n super();\n this.name = name;\n this.precedence = Value.precedence;\n this.class = \"Value\";\n if (typeof value == \"string\")\n this.value = isNaN(+value.replace(\",\", \".\")) ? value : +value.replace(\",\", \".\");\n else\n this.value = value;\n }\n toString() {\n return this.name ? `${this.name?.toString()}.` + this.value.toString() : this.value.toString();\n }\n evaluate(variable) {\n return variable ? this.get(variable) : +this.value;\n }\n get(variable) {\n return typeof this.value == \"string\"\n ? +variable[this.value]\n : this.name && typeof this.value == \"object\"\n ? this.value.get(variable[this.name])\n : +this.value;\n }\n static create(value, name) {\n return new Value(value, name);\n }\n}\nValue.precedence = 19;\n//# sourceMappingURL=Value.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class GreaterThan extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"GreaterThan\";\n this.symbol = \">\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) >\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function greaterThan(criteria, value) {\n const result = new GreaterThan(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \">\",\n suggestion: { value: \">\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=GreaterThan.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class GreaterThanOrEqual extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"GreaterThanOrEqual\";\n this.symbol = \">=\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) >=\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function greaterThanOrEqual(criteria, value) {\n const result = new GreaterThanOrEqual(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \">=\",\n suggestion: { value: \">=\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=GreaterThanOrEqual.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Has extends Rule {\n constructor(property) {\n super();\n this.property = property;\n this.precedence = 85;\n this.class = \"Has\";\n }\n is(value, property) {\n return typeof value == \"object\" && value\n ? Object.entries(value).some(e => {\n property = typeof property == \"string\" ? property : this.property;\n return e[0] == property\n ? true\n : typeof e[1] == \"object\" && e[1]\n ? this.is(e[1], property.includes(\".\") && property.split(\".\")[0] == e[0] ? property.split(\".\")[1] : undefined)\n : false;\n })\n : false;\n }\n toString() {\n return `has(${this.property})`;\n }\n}\nexport function has(criteria, value) {\n const result = new Has(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return baseObject && type?.class == \"object\"\n ? Completor.functions(tokens, (tokens) => type.completions.filter(c => c.value.startsWith(tokens ? tokens[0].value : \"\")), {\n value: \"has()\",\n cursor: 4,\n suggestion: { value: \"has()\" },\n })\n : [];\n}\nType.Object.add(complete);\n//# sourceMappingURL=Has.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Includes extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Includes\";\n }\n is(value) {\n return typeof value == \"string\" && value.includes(this.needle);\n }\n toString() {\n return `*${this.needle}*`;\n }\n}\nexport function includes(needle, value) {\n const result = new Includes(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens ||\n (tokens.length == 3 && string.value?.includes(tokens[1].value) && string.value != tokens[1].value) ||\n (tokens.length == 2 && tokens[0].value + tokens[1].value == \"**\")\n ? [\n Type.Completion.prepend(\"*\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } }, \"*\"),\n ]\n : tokens.length == 1 && tokens[0].value == \"*\"\n ? [{ value: \"**\", suggestion: { value: \"**\", description: \"includes\" } }]\n : [];\n }, { value: \"**\", cursor: 1, suggestion: { value: \"**\", description: \"includes\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=Includes.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nexport class Some extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 100;\n this.class = \"Some\";\n }\n is(value, object) {\n return Array.isArray(value) && value.some(v => this.criteria.is(v, object));\n }\n toString() {\n return `some(${this.criteria.toString()})`;\n }\n}\nexport function some(criteria, value) {\n const result = new Some(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens[0].value != \":\"\n ? []\n : tokens.length == 1 && tokens[0].value == \":\"\n ? Type.Completion.prepend(\":\", type.array\n .filter(Type.String.is)\n .filter(e => e.value && e.value != \"string\")\n .map(e => ({ value: e?.value ?? \"\", suggestion: { value: e?.value ?? \"\" } })))\n : tokens.length == 2 && tokens[0].value == \":\"\n ? Type.Completion.prepend(\":\", type.array\n .filter(Type.String.is)\n .filter(e => e.value && e.value != \"string\" && e.value.startsWith(tokens[1].value))\n .map(e => ({ value: e?.value ?? \"\", suggestion: { value: e?.value ?? \"\" } })))\n : [];\n}\nType.Array.add(complete);\n//# sourceMappingURL=Some.js.map","import { isCriteria } from \"./Criteria\";\nimport { add, Rule } from \"./Rule\";\nimport { some } from \"./Some\";\nexport class Is extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Is\";\n this.symbol = \":\";\n }\n is(value, object) {\n return Array.isArray(value) && isCriteria(this.value)\n ? some(this.value, value)\n : (typeof value == \"boolean\" ? value.toString() : isNaN(+value) ? value : +value) ==\n (typeof this.value == \"object\" ? this.value.evaluate(object) : this.value);\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function is(criteria, value) {\n const result = new Is(criteria);\n return value ? result.is(value) : result;\n}\nadd(criteria => typeof criteria == \"bigint\" ||\n typeof criteria == \"boolean\" ||\n typeof criteria == \"number\" ||\n typeof criteria == \"string\"\n ? new Is(criteria)\n : undefined);\n//# sourceMappingURL=Is.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class LesserThan extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"LesserThan\";\n this.symbol = \"<\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) <\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function lesserThan(criteria, value) {\n const result = new LesserThan(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \"<\",\n suggestion: { value: \"<\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=LesserThan.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class LesserThanOrEqual extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"LesserThanOrEqual\";\n this.symbol = \"<=\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) <=\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function lesserThanOrEqual(criteria, value) {\n const result = new LesserThanOrEqual(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \"<=\",\n suggestion: { value: \"<=\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=LesserThanOrEqual.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Match extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Match\";\n }\n is(value) {\n return typeof value == \"string\" && this.criteria.test(value);\n }\n toString() {\n return `/${this.criteria}/`;\n }\n}\nexport function match(criteria) {\n return new Match(criteria);\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return tokens && tokens?.length == 1 && tokens[0].value == \"/\" ? [{ value: \"//\", cursor: 1 }] : [];\n }, { value: \"//\", cursor: 1, suggestion: { value: \"//\", description: \"match\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=Match.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Not extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Not.precedence;\n this.class = \"Not\";\n }\n is(value) {\n return !this.criteria.is(value);\n }\n toString() {\n return `!${this.criteria.stringify(this.precedence)}`;\n }\n}\nNot.precedence = 90;\nexport function not(criteria, value) {\n const result = new Not(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return type && type.class != \"object\" && baseObject\n ? Completor.expressions(tokens, (tokens) => {\n return tokens[0].value != \"!\"\n ? []\n : Type.Completion.prepend(\"!\", type.complete(tokens.slice(1), baseObject, type));\n }, { value: \"!\", cursor: 1, suggestion: { value: \"!\", description: \"not\" } })\n : [];\n}\nType.String.add(complete);\nType.Number.add(complete);\nType.Boolean.add(complete);\nType.Object.add(complete);\n//# sourceMappingURL=Not.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nexport class Or extends Rule {\n constructor(criterias) {\n super();\n this.precedence = Or.precedence;\n this.class = \"Or\";\n this.criteria = criterias.reduce((r, c) => (c instanceof Or ? [...r, ...c.criteria] : [...r, c]), []);\n }\n is(value) {\n return this.criteria.some(c => c.is(value));\n }\n toString() {\n return this.criteria.map(c => c.stringify(this.precedence)).join(\" | \");\n }\n}\nOr.precedence = 30;\nexport function or(...criterias) {\n return new Or(criterias.map(create));\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, undefined) : []), {\n value: \" | \",\n suggestion: { value: \"|\", description: \"or\" },\n });\n}\nType.Number.addArgument(complete);\n//# sourceMappingURL=Or.js.map","import { Error, Utilities } from \"@cogneco/mend\";\nexport class Source extends Utilities.BufferedEnumerator {\n constructor(tokens, errorHandler) {\n super(Array.isArray(tokens) ? new Utilities.ArrayEnumerator(tokens) : tokens);\n this.errorHandler = errorHandler;\n }\n clone(start = \"(\", end = \")\") {\n let nestingCount = 0;\n return new Source(new Utilities.Enumerator(() => {\n let result;\n if (this.peekIs(start))\n nestingCount++;\n else if (this.peekIs(end))\n nestingCount--;\n if (nestingCount >= 0)\n result = this.fetch();\n return result;\n }), this);\n }\n peekIs(...needles) {\n return needles.every((needle, index) => {\n const peeked = this.peek(index);\n return peeked && peeked.value && Source.is(needle, peeked.value);\n });\n }\n fetchIf(...needles) {\n const result = [];\n if (this.peekIs(...needles))\n needles.forEach(_ => result.push(this.fetch()));\n return needles.length == 1\n ? result.length == 1\n ? result[0]\n : undefined\n : needles.length == result.length\n ? result\n : undefined;\n }\n mark() {\n return Utilities.Enumerable.from(Utilities.Enumerable.empty);\n }\n raise(message, level = Error.Level.Critical, type = \"grammatical\", region) {\n if (typeof message == \"string\") {\n if (!region && this.last)\n region = this.last.region;\n message = new Error.Message(message, level, type, region);\n }\n this.errorHandler.raise(message);\n }\n static is(needle, value) {\n return Array.isArray(needle)\n ? needle.some(n => Source.is(n, value))\n : typeof needle != \"string\"\n ? needle.test(value)\n : needle.startsWith(\"!\") && needle != \"!\"\n ? !Source.is(needle.substring(1), value)\n : needle == \"any\"\n ? Source.symbol.every(s => s != value)\n : needle == \"symbol\"\n ? Source.symbol.some(s => s == value)\n : needle == \"identifier\"\n ? /[A-Za-z][A-Za-z0-9_]*/.test(value)\n : needle == value;\n }\n}\nSource.wildcard = [\"*\", \"?\"];\nSource.separator = [\"(\", \")\", \".\"];\nSource.operator = [\"!\", \"|\"];\nSource.comparator = [\"<\", \"<=\", \">\", \">=\", \":\"];\nSource.binaryOperator = [\" * \", \" + \", \" - \"];\nSource.symbol = [...Source.wildcard, ...Source.separator, ...Source.operator, ...Source.comparator];\n//# sourceMappingURL=Source.js.map","import { Error } from \"@cogneco/mend\";\nimport { And } from \"../And\";\nimport * as lexer from \"../lexer\";\nimport { Or } from \"../Or\";\nimport { Rule } from \"../Rule\";\nimport { Source } from \"./Source\";\nexport function parse(source, handler) {\n if (typeof source == \"string\") {\n handler = handler || new Error.ConsoleHandler();\n const tokens = lexer.tokenize(source, handler).toArray();\n source = new Source(tokens, handler);\n }\n handler = handler instanceof Rule ? handler : undefined;\n const result = [];\n while (source.peek()) {\n if (source.fetchIf(\"|\"))\n result[result.length - 1] = new Or([result[result.length - 1], parseNext(0, source)]);\n else\n result.push(parseNext(0, source));\n }\n return result.length == 1 ? result[0] : new And(result);\n}\nexport function parseNext(previous, source) {\n let result;\n const precedenceTest = typeof previous == \"number\" ? p => previous < p : p => previous.precedence > p;\n const left = typeof previous == \"number\" ? undefined : previous;\n for (const parser of parsers)\n if (precedenceTest(parser[1] || Number.MAX_SAFE_INTEGER)) {\n const r = parser[0](source, left);\n if (r) {\n result = parseNext(r, source);\n break;\n }\n }\n return result || left || new And([]);\n}\nconst parsers = [];\nexport function add(parser, precedence) {\n parsers.push([parser, precedence]);\n}\n//# sourceMappingURL=parse.js.map","import { Error } from \"@cogneco/mend\";\nimport { Expression } from \"../Expression\";\nimport * as lexer from \"../lexer\";\nimport { Value } from \"../Value\";\nimport { Source } from \"./Source\";\nexport function parseExpression(source, handler) {\n if (typeof source == \"string\") {\n handler = handler || new Error.ConsoleHandler();\n const tokens = lexer.tokenize(source, handler).toArray();\n source = new Source(tokens, handler);\n }\n handler = handler instanceof Expression ? handler : undefined;\n let result;\n let algebra = false;\n let comparator = false;\n while (!result != algebra && !comparator && source.peek()) {\n let i = 1;\n algebra = false;\n comparator = false;\n while (!algebra && !comparator && source.peek(i)) {\n algebra = Source.binaryOperator.some(c => source.peek(i)?.value == c);\n comparator = Source.comparator.some(c => source.peek(i)?.value == c);\n i++;\n }\n result = parseNextExpression(result ?? Number.MAX_SAFE_INTEGER, source);\n }\n if (!result)\n source.raise(\"Missing Expression\");\n return result ?? new Value(NaN);\n}\nexport function parseNextExpression(previous, source) {\n let result;\n const left = typeof previous == \"number\" ? undefined : previous;\n for (const expressionParser of expressionParsers) {\n const r = expressionParser[0](source, previous);\n if (r) {\n result = r;\n break;\n }\n }\n return result || left;\n}\nconst expressionParsers = [];\nexport function addExpression(expressionParser, precedence) {\n expressionParsers.push([expressionParser, precedence]);\n}\n//# sourceMappingURL=Expression.js.map","import { Every } from \"../Every\";\nimport { add, parse } from \"./parse\";\nadd(source => {\n const result = source.fetchIf(\":\", \"every\", \"(\") && new Every(parse(source.clone()));\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n});\n//# sourceMappingURL=Every.js.map","import { Some } from \"../Some\";\nimport { add, parse } from \"./parse\";\nadd(source => {\n const result = source.fetchIf(\":\", \"some\", \"(\") && new Some(parse(source.clone()));\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n});\n//# sourceMappingURL=Some.js.map","import { addExpression, parseExpression } from \"./Expression\";\nimport { add, parse } from \"./parse\";\nadd(getAdder(parse));\naddExpression(getAdder(parseExpression));\nfunction getAdder(parser) {\n return (source) => {\n const result = source.fetchIf(\"(\") && parser(source.clone());\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n };\n}\n//# sourceMappingURL=group.js.map","import { GreaterThan } from \"../GreaterThan\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\">\") && new GreaterThan(parseExpression(source));\n});\n//# sourceMappingURL=GreaterThan.js.map","import { GreaterThanOrEqual } from \"../GreaterThanOrEqual\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\">=\") && new GreaterThanOrEqual(parseExpression(source));\n});\n//# sourceMappingURL=GreaterThanOrEqual.js.map","import { LesserThan } from \"../LesserThan\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\"<\") && new LesserThan(parseExpression(source));\n});\n//# sourceMappingURL=LesserThan.js.map","import { LesserThanOrEqual } from \"../LesserThanOrEqual\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\"<=\") && new LesserThanOrEqual(parseExpression(source));\n});\n//# sourceMappingURL=LesserThanOrEqual.js.map","import { Not } from \"../Not\";\nimport { add, parseNext } from \"./parse\";\nadd(source => source.fetchIf(\"!\") && new Not(parseNext(Not.precedence, source)));\n//# sourceMappingURL=Not.js.map","import { Has } from \"../Has\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\"has\", \"(\", \"any\", \")\") || source.fetchIf(\":\", \"has\", \"(\", \"any\", \")\");\n return fetched && new Has(fetched.length == 4 ? fetched[2].value : fetched[3].value);\n});\n//# sourceMappingURL=Has.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Within extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"Within\";\n }\n is(value) {\n return this.value.includes(value);\n }\n toString() {\n return `within(${this.value.join(\", \")})`;\n }\n}\nexport function within(criteria, value) {\n const result = new Within(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return baseObject && type?.class\n ? Completor.functions(tokens, (tokens) => [], {\n value: \"within()\",\n cursor: 7,\n suggestion: { value: \"within()\" },\n })\n : [];\n}\nType.String.add(complete);\nType.Number.add(complete);\n//# sourceMappingURL=Within.js.map","import { Within } from \"../Within\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"within\", \"(\");\n let parameters;\n if (fetched && source.peek()) {\n parameters = [source.fetch()?.value ?? \"\"];\n while (source.fetchIf(\",\"))\n parameters.push(source.fetchIf(\"any\")?.value ?? \"\");\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters ? new Within(parameters) : undefined;\n});\n//# sourceMappingURL=Within.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Contains extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 85;\n this.class = \"Contains\";\n }\n is(value, object) {\n return Array.isArray(value) && this.criteria.every(c => value.some(v => c == v));\n }\n toString() {\n return `contains(${this.criteria.join(\", \")})`;\n }\n}\nexport function contains(criteria, value) {\n const result = new Contains(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Completor.functions(tokens, () => [], {\n value: \"contains()\",\n cursor: 9,\n suggestion: { value: \"contains()\" },\n });\n}\nType.Array.add(complete);\n//# sourceMappingURL=Contains.js.map","import { Contains } from \"../Contains\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"contains\", \"(\");\n const parameters = [];\n if (fetched && source.peek()) {\n do {\n parameters.push(source.fetchIf(\"any\")?.value ?? \"\");\n } while (source.fetchIf(\",\"));\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters.length > 0 ? new Contains(parameters) : undefined;\n});\n//# sourceMappingURL=Contains.js.map","import { FunctionCall } from \"../FunctionCall\";\nimport { add } from \"./parse\";\nadd(source => {\n const peek = source.peek(3)?.value;\n const fetched = [\")\", \",\", \"(\"].find(s => s == peek) || source.peek(2)?.value == \")\" ? source.fetchIf(\"identifier\", \"(\") : undefined;\n let parameters;\n if (fetched && source.peek()) {\n parameters = [source.fetchIf(/[A-Za-z0-9_\\.\\-]+/)?.value ?? \"\"];\n while (source.fetchIf(\",\"))\n parameters.push(source.fetchIf(/[A-Za-z0-9_\\.\\-]+/)?.value ?? \"\");\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters ? new FunctionCall(fetched[0].value, parameters) : undefined;\n});\n//# sourceMappingURL=FunctionCall.js.map","import { and } from \"./And\";\nimport { add, create, Rule } from \"./Rule\";\nexport class Property extends Rule {\n constructor(name, criteria) {\n super();\n this.name = name;\n this.criteria = criteria;\n this.precedence = Property.precedence;\n this.class = \"Property\";\n this.symbol = \".\";\n }\n is(value, object) {\n return !this.criteria\n ? value == object?.[this.name]\n : typeof value == \"object\"\n ? this.criteria.is(value[this.name], object ?? value)\n : this.criteria.is(value, object?.[this.name]);\n }\n toString() {\n return `${this.name}${this.criteria ? this.criteria.symbol ?? \":\" : \"\"}${this.criteria?.stringify(this.precedence) ?? \"\"}`;\n }\n}\nProperty.precedence = 80;\nexport function property(name, criteria, value) {\n const result = (Array.isArray(name) ? name : [name]).reduceRight((r, p) => new Property(p, r), create(criteria));\n return value ? result.is(value) : result;\n}\nadd(criteria => typeof criteria == \"object\" && !(criteria instanceof Rule) && !Array.isArray(criteria)\n ? and(...Object.getOwnPropertyNames(criteria).map(p => property(p, criteria[p])))\n : undefined);\n//# sourceMappingURL=Property.js.map","import { Property } from \"../Property\";\nimport { add, parseNext } from \"./parse\";\nimport { Source } from \"./Source\";\nadd(source => {\n const result = [];\n let fetched;\n while ((fetched = source.fetchIf(\"identifier\", \".\")))\n result.push(fetched[0].value);\n if (source.peekIs(\"identifier\", Source.comparator) && (fetched = source.fetchIf(\"identifier\")))\n result.push(fetched.value);\n return result.length > 0\n ? result.reduceRight((r, name) => new Property(name, r), source.peekIs(\"identifier\") && (fetched = source.fetchIf(\"identifier\"))\n ? new Property(fetched.value)\n : parseNext(Property.precedence, source))\n : undefined;\n});\n//# sourceMappingURL=Property.js.map","import { Includes } from \"../Includes\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"*\", \"any\", \"*\") || source.fetchIf(\"*\", \"any\", \"*\");\n return fetched && new Includes(fetched.length == 4 ? fetched[2].value : fetched[1].value);\n});\n//# sourceMappingURL=Includes.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class StartsWith extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"StartsWith\";\n }\n is(value) {\n return typeof value == \"string\" && value.startsWith(this.needle);\n }\n toString() {\n return `${this.needle}*`;\n }\n}\nexport function startsWith(needle, value) {\n const result = new StartsWith(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens ||\n (tokens.length == 1 && tokens[0].value == \"*\") ||\n (tokens.length == 2 &&\n tokens[1].value == \"*\" &&\n string.value &&\n string.value.startsWith(tokens[0]?.value ?? \"\"))\n ? [Type.Completion.prepend(\"\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } }, \"*\")]\n : [];\n }, { value: \"*\", cursor: 0, suggestion: { value: \"*\", description: \"startswith\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=StartsWith.js.map","import { StartsWith } from \"../StartsWith\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"any\", \"*\") || source.fetchIf(\"any\", \"*\");\n return fetched && new StartsWith(fetched?.length == 3 ? fetched[1].value : fetched[0].value);\n});\n//# sourceMappingURL=StartsWith.js.map","import { EndsWith } from \"../EndsWith\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"*\", \"any\") || source.fetchIf(\"*\", \"any\");\n return fetched && new EndsWith(fetched?.length == 3 ? fetched[2].value : fetched[1].value);\n});\n//# sourceMappingURL=EndsWith.js.map","import { Expression } from \"./Expression\";\nimport { Type } from \"./Type\";\nexport class InfixOperator extends Expression {\n toString() {\n const symbol = this.symbol;\n return (this.left.stringify(InfixOperator.getPrecedence(symbol)) +\n ` ${symbol} ` +\n this.right.stringify(InfixOperator.getPrecedence(symbol)));\n }\n constructor(symbol, precedence, left, right) {\n super();\n this.precedence = precedence;\n this.left = left;\n this.right = right;\n this.class = \"InfixOperator\";\n this.symbol = symbol.replace(/ /g, \"\");\n }\n evaluate(criteria) {\n let result;\n switch (this.getSymbol()) {\n case \"+\":\n result = this.left.evaluate(criteria) + this.right.evaluate(criteria);\n break;\n case \"-\":\n result = this.left.evaluate(criteria) - this.right.evaluate(criteria);\n break;\n case \"*\":\n result = this.left.evaluate(criteria) * this.right.evaluate(criteria);\n break;\n default:\n result = NaN;\n break;\n }\n return result;\n }\n getSymbol() {\n return this.symbol;\n }\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n static getPrecedence(symbol) {\n let result;\n symbol = symbol?.replace(/ /g, \"\");\n switch (symbol) {\n case \"+\":\n result = 14;\n break;\n case \"-\":\n result = 15;\n break;\n case \"*\":\n result = 16;\n break;\n default:\n result = undefined;\n break;\n }\n return result;\n }\n static create(symbol, left, right) {\n let result;\n const fallback = new InfixOperator(\"+\", 14, left, right);\n const precedence = InfixOperator.getPrecedence(symbol);\n if (precedence)\n result = new InfixOperator(symbol, precedence, left, right);\n return result || fallback;\n }\n}\nfunction complete(tokens, type, baseObject) {\n return [\" + \", \" - \", \" * \"]\n .map(s => ({ value: s, suggestion: { value: s } }))\n .map(c => Type.Completor.operators(tokens, (tokens) => (tokens ? baseObject.complete(tokens, undefined, type) : []), c))\n .reduce((result, element) => result.concat(element), []);\n}\nType.Number.addArgument(complete);\n//# sourceMappingURL=InfixOperator.js.map","import { InfixOperator } from \"../InfixOperator\";\nimport { addExpression, parseNextExpression } from \"./Expression\";\nimport { Source } from \"./Source\";\naddExpression((source, previous) => {\n let result;\n const symbol = source.peekIs(Source.binaryOperator) && source.fetch().value;\n let precedence;\n if (symbol && typeof previous == \"object\") {\n let right;\n let nextPrecedence;\n let i = 0;\n precedence = InfixOperator.getPrecedence(symbol);\n while (!nextPrecedence && source.peek(i)) {\n nextPrecedence =\n source.peek(i)?.value == \"(\" ? Number.MAX_SAFE_INTEGER : InfixOperator.getPrecedence(source.peek(i)?.value);\n i++;\n }\n if (nextPrecedence && precedence < nextPrecedence) {\n right = parseNextExpression(precedence, source);\n if (!right) {\n source.raise(\"Missing right hand side of \" + symbol);\n }\n }\n else\n right = parseNextExpression(NaN, source);\n if ((nextPrecedence && precedence == nextPrecedence) || nextPrecedence == Number.MAX_SAFE_INTEGER) {\n result = parseNextExpression(new InfixOperator(symbol, precedence, previous, right), source);\n }\n else\n result = new InfixOperator(symbol, precedence, previous, right);\n }\n return result;\n});\n//# sourceMappingURL=InfixOperator.js.map","import { Value } from \"../Value\";\nimport { addExpression, parseNextExpression } from \"./Expression\";\naddExpression((source, previous) => {\n const fetchedArray = [];\n let fetched;\n while ((fetched = source.fetchIf(\"identifier\", \".\")))\n fetchedArray.push(fetched[0].value);\n let result;\n if (fetchedArray.length == 0) {\n fetched = source.fetchIf(\"any\", \".\", \"any\") || source.fetchIf(\"any\", \",\", \"any\") || source.fetchIf(\"any\");\n result =\n fetched &&\n (Array.isArray(fetched)\n ? new Value(+fetched.map(t => t.value.replace(\",\", \".\")).join(\"\"))\n : new Value(fetched.value));\n }\n else {\n fetched = source.fetchIf(\"identifier\");\n const fetchedValue = new Value(fetched ? fetched.value : 0);\n result =\n fetchedArray.length > 0\n ? fetchedArray.reduceRight((r, name) => new Value(isNaN(+r) ? r : +r, name), fetchedValue)\n : undefined;\n }\n if (result && typeof previous == \"number\" && !isNaN(previous) && previous != Number.MAX_SAFE_INTEGER)\n result = parseNextExpression(result, source);\n return result;\n});\n//# sourceMappingURL=Value.js.map","import { Is } from \"../Is\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nimport { Source } from \"./Source\";\nadd(source => {\n let expression;\n if (source.fetchIf(\":\")) {\n let algebra = false;\n let comparator = false;\n let i = 1;\n while (!algebra && !comparator && source.peek(i)) {\n algebra = Source.binaryOperator.some(c => source.peek(i)?.value == c);\n comparator = Source.comparator.some(c => source.peek(i)?.value == c);\n i++;\n }\n if (algebra)\n expression = parseExpression(source);\n }\n const fetched = source.fetchIf(\"any\");\n return expression ? new Is(expression) : fetched && new Is(fetched.value);\n});\n//# sourceMappingURL=Is.js.map","import { add } from \"./parse\";\nadd(source => {\n source.raise(`Ignoring unknown token \"${source.fetch()}\"`);\n return undefined;\n});\n//# sourceMappingURL=ignore.js.map","export function resolve(definitions, rule, argument = { input: [], identifier: [] }) {\n return resolvers[rule?.class]?.(definitions, rule, argument) ?? rule;\n}\nconst resolvers = {};\nexport function add(className, resolver) {\n resolvers[className] = resolver;\n}\n//# sourceMappingURL=resolve.js.map","import { And } from \"../And\";\nimport { add, resolve } from \"./resolve\";\nadd(\"And\", (definitions, rule, argument) => new And(rule.rules.map(r => resolve(definitions, r, argument))));\n//# sourceMappingURL=And.js.map","export var replace;\n(function (replace) {\n function argument(value, argument) {\n let result = undefined;\n let index;\n const parameter = typeof value == \"string\" ? value : value.toString();\n if (argument &&\n argument.input &&\n argument.identifier &&\n argument?.input?.length > 0 &&\n argument?.identifier?.length > 0 &&\n argument.identifier.includes(parameter)) {\n index = argument.identifier.indexOf(parameter);\n result = isNaN(+argument.input[index]) ? argument.input[index] : +argument.input[index];\n }\n return result;\n }\n replace.argument = argument;\n})(replace || (replace = {}));\n//# sourceMappingURL=replace.js.map","import { EndsWith } from \"../EndsWith\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"EndsWith\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.needle, argument);\n return parameter\n ? new EndsWith(typeof parameter == \"object\" ? parameter.value.toString() : parameter.toString())\n : rule;\n});\n//# sourceMappingURL=Endswith.js.map","import { Every } from \"../Every\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Every\", (definitions, rule, argument) => {\n return new Every(resolve(definitions, rule.criteria, argument));\n});\n//# sourceMappingURL=Every.js.map","import { FunctionCall } from \"../FunctionCall\";\nimport { parse } from \"../parse\";\nimport { add, resolve } from \"./resolve\";\nadd(\"FunctionCall\", (definitions, rule, argument) => {\n const definition = definitions[rule.identifier];\n const definitionRule = definition ? parse(definition.definition) : undefined;\n const property = definitionRule\n ? resolve(definitions, definitionRule, {\n input: argument?.input?.concat(rule.argument),\n identifier: argument?.identifier?.concat(definition.arguments),\n })\n : undefined;\n return new FunctionCall(rule.identifier, rule.argument, property);\n});\n//# sourceMappingURL=FunctionCall.js.map","import { GreaterThan } from \"../GreaterThan\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"GreaterThan\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new GreaterThan(parameter) : rule;\n});\n//# sourceMappingURL=GreaterThan.js.map","import { GreaterThanOrEqual } from \"../GreaterThanOrEqual\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"GreaterThanOrEqual\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new GreaterThanOrEqual(parameter) : rule;\n});\n//# sourceMappingURL=GreaterThanOrEqual.js.map","import { Has } from \"../Has\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"Has\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.property, argument);\n return parameter ? new Has(typeof parameter == \"object\" ? parameter.value.toString() : parameter.toString()) : rule;\n});\n//# sourceMappingURL=Has.js.map","import { Includes } from \"../Includes\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"Includes\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.needle, argument);\n return parameter\n ? new Includes(typeof parameter == \"object\" ? parameter.value.toString() : parameter.toString())\n : rule;\n});\n//# sourceMappingURL=Includes.js.map","import { LesserThan } from \"../LesserThan\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"LesserThan\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new LesserThan(parameter) : rule;\n});\n//# sourceMappingURL=LesserThan.js.map","import { LesserThanOrEqual } from \"../LesserThanOrEqual\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"LesserThanOrEqual\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new LesserThanOrEqual(parameter) : rule;\n});\n//# sourceMappingURL=LesserThanOrEqual.js.map","import { Not } from \"../Not\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Not\", (definitions, rule, argument) => {\n return new Not(resolve(definitions, rule.criteria, argument));\n});\n//# sourceMappingURL=Not.js.map","import { Or } from \"../Or\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Or\", (definitions, rule, argument) => new Or(rule.criteria.map(r => resolve(definitions, r, argument))));\n//# sourceMappingURL=Or.js.map","import { Property } from \"../Property\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Property\", (definitions, rule, argument) => {\n return new Property(rule.name, rule.criteria && resolve(definitions, rule.criteria, argument));\n});\n//# sourceMappingURL=Property.js.map","import { Some } from \"../Some\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Some\", (definitions, rule, argument) => {\n return new Some(resolve(definitions, rule.criteria, argument));\n});\n//# sourceMappingURL=Some.js.map","import { StartsWith } from \"../StartsWith\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"StartsWith\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.needle, argument);\n return parameter\n ? new StartsWith(typeof parameter == \"object\" ? parameter.value.toString() : parameter.toString())\n : rule;\n});\n//# sourceMappingURL=Startswith.js.map","import { Is } from \"../Is\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"Is\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new Is(parameter) : rule;\n});\n//# sourceMappingURL=Is.js.map","import { add, create, Rule } from \"./Rule\";\nexport class Tuple extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Tuple\";\n }\n is(value) {\n return this.criteria.length == value.length && this.criteria.every((c, index) => c.is(value[index]));\n }\n toString() {\n return `[${this.criteria.map(c => c.toString()).join(\", \")}]`;\n }\n}\nadd(criteria => (Array.isArray(criteria) ? new Tuple(criteria.map(create)) : undefined));\n//# sourceMappingURL=Tuple.js.map","import \"./Always\";\nimport { And, and } from \"./And\";\nimport { Any, any } from \"./Any\";\nimport { Contains, contains } from \"./Contains\";\nimport { Criteria } from \"./Criteria\";\nimport { EndsWith, endsWith } from \"./EndsWith\";\nimport { Every, every } from \"./Every\";\nimport { FunctionCall } from \"./FunctionCall\";\nimport { GreaterThan, greaterThan } from \"./GreaterThan\";\nimport { GreaterThanOrEqual, greaterThanOrEqual } from \"./GreaterThanOrEqual\";\nimport { Has, has } from \"./Has\";\nimport { Includes, includes } from \"./Includes\";\nimport { Is } from \"./Is\";\nimport { LesserThan, lesserThan } from \"./LesserThan\";\nimport { LesserThanOrEqual, lesserThanOrEqual } from \"./LesserThanOrEqual\";\nimport { Match, match } from \"./Match\";\nimport { Not, not } from \"./Not\";\nimport { Or, or } from \"./Or\";\nimport { parse, parseExpression } from \"./parse\";\nimport { Property, property } from \"./Property\";\nimport { resolve } from \"./resolve\";\nimport { create, Rule } from \"./Rule\";\nimport { Some, some } from \"./Some\";\nimport { StartsWith, startsWith } from \"./StartsWith\";\nimport { Tuple } from \"./Tuple\";\nimport { Type as SType } from \"./Type\";\nimport { Value } from \"./Value\";\nimport { Within, within } from \"./Within\";\nfunction is(criteria, value) {\n const result = create(criteria);\n return value ? result.is(value) : result;\n}\nfunction filter(criteria, value) {\n const c = create(criteria);\n return c.filter(value);\n}\nexport { And, Any, Criteria, Contains, EndsWith, Every, FunctionCall, Has, GreaterThan, GreaterThanOrEqual, LesserThan, LesserThanOrEqual, Includes, Is, Match, Not, Or, Property, Rule, Some, StartsWith, Tuple, SType as Type, Value, Within, any, and, create, contains, endsWith, every, has, filter, greaterThan, greaterThanOrEqual, lesserThan, lesserThanOrEqual, includes, is, match, not, or, parse, parseExpression, property, resolve, some, startsWith, within, };\n//# sourceMappingURL=selectively.js.map","import { EventEmitter } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { isly } from \"isly\"\n\nconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\nexport interface Filter extends Filter.Element {\n\tsmoothlyFilterUpdate: EventEmitter<Filter.Update>\n\tsmoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n}\nexport namespace Filter {\n\texport type Manipulate = (criteria: selectively.Criteria) => selectively.Criteria\n\texport type Update = (expression: selectively.Criteria) => void\n\texport interface Element {\n\t\tproperty?: string\n\t\tproperties?: Record<string, string>\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tproperty: isly.string().optional(),\n\t\t\tproperties: isly.record<Record<string, string>>(isly.string(), isly.string()).optional(),\n\t\t})\n\t}\n\texport const type = Element.type.extend<Filter>({\n\t\tsmoothlyFilterUpdate: EventEmitter,\n\t\tsmoothlyFilterManipulate: EventEmitter,\n\t})\n}\n",":host {\n\tposition: relative;\n\tborder: 1px solid rgb(var(--smoothly-medium-tint));\n\tmargin-left: 1rem;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tmargin-right: 1rem;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n:host>div::slotted([slot=detail]) {\n\tz-index: 5;\n}\n\n:host::slotted([slot=bar]) {\n\tpointer-events: auto;\n\tmargin-left: 0.3em;\n\tmargin-right: 0.3em;\n\n\t&>[looks=\"plain\"] {\n\t\tdisplay: flex;\n\t\talign-self: stretch;\n\t\talign-items: center;\n\t}\n}\n\n:host>div:empty+smoothly-icon {\n\tdisplay: none;\n}\n\n:host>smoothly-icon {\n\tcursor: pointer;\n\tmargin-left: 0.3em;\n\tmargin-right: 0.3em;\n\tflex-shrink: 0;\n}\n\n:host>div.close {\n\tposition: fixed;\n\tz-index: 3;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100dvw;\n\theight: 100dvh;\n\tbackground: transparent;\n}\n\n:host>div.hidden {\n\tdisplay: none;\n}\n\n:host>.container {\n\tpadding: 2em;\n\tposition: absolute;\n\tright: 0.35em;\n\twidth: fit-content;\n\tdisplay: flex;\n\tjustify-content: center;\n\ttop: 100%;\n\twidth: fit-content;\n\tz-index: 4;\n\tbackground-color: rgb(var(--smoothly-color));\n\tmargin: 0.8em -2em;\n}\n\n/* arrow */\n:host>div.container:before {\n\tcontent: \"\";\n\twidth: 0.6em;\n\theight: 0.6em;\n\ttransform: rotate(45deg);\n\tborder-top: 1px solid rgb(var(--smoothly-medium-tint));\n\tborder-left: 1px solid rgb(var(--smoothly-medium-tint));\n\tbackground-color: rgb(var(--smoothly-color));\n\tposition: absolute;\n\tz-index: 3;\n}\n\n/* arrow placement */\n:host>div.container.arrow-top:before {\n\tleft: calc(91%);\n\ttop: -5px;\n}\n\n:host div.container:after {\n\tcontent: \"\";\n\theight: 100%;\n\twidth: 100%;\n\tborder: 1px solid rgb(var(--smoothly-medium-tint));\n\tborder-radius: 0.25em;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { Filter } from \"./Filter\"\n\n@Component({\n\ttag: \"smoothly-filter\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilter {\n\tfield: HTMLSmoothlyFilterFieldElement | undefined\n\tupdating = false\n\tfilters: Set<Filter.Update> = new Set<Filter.Update>() // maybe set?\n\t@State() detailChildren?: boolean\n\t@State() criteria: selectively.Criteria = selectively.and()\n\t@State() expanded = false\n\t@Event() smoothlyFilter: EventEmitter<selectively.Criteria>\n\n\t@Listen(\"smoothlyFilterUpdate\")\n\tupdateHandler(event: CustomEvent<Filter.Update>) {\n\t\tevent.stopPropagation()\n\t\tif (Filter.Element.type.is(event.target))\n\t\t\tthis.filters.add(event.detail)\n\t}\n\t@Listen(\"smoothlyFilterManipulate\")\n\tmanipulateHandler(event: CustomEvent<Filter.Manipulate>) {\n\t\tevent.stopPropagation()\n\t\tthis.updating = true\n\t\tthis.criteria = event.detail(this.criteria)\n\t\tthis.smoothlyFilter.emit(this.criteria)\n\t\tthis.filters.forEach(update => update(this.criteria))\n\t\tthis.updating = false\n\t}\n\t@Listen(\"smoothlyFilterField\")\n\tfilterFieldHandler(event: CustomEvent<selectively.Criteria>) {\n\t\tevent.stopPropagation()\n\t\tif (!this.updating) {\n\t\t\tthis.smoothlyFilter.emit((this.criteria = selectively.and(event.detail)))\n\t\t\tthis.filters.forEach(update => update(this.criteria))\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.field?.clear()\n\t\tthis.smoothlyFilter.emit((this.criteria = selectively.and()))\n\t\tthis.filters.forEach(update => update(this.criteria))\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot name=\"bar\" />\n\t\t\t\t<smoothly-filter-field criteria={this.criteria} ref={e => (this.field = e)} />\n\t\t\t\t{this.criteria.toString() != \"\" && (\n\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\tname={\"close\"}\n\t\t\t\t\t\ttoolTip={\"Clear all filters\"}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tthis.clear()\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<div class={this.expanded ? \"container arrow-top\" : \"hidden\"}>\n\t\t\t\t\t<slot name=\"detail\" />\n\t\t\t\t</div>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={this.expanded ? \"options\" : \"options-outline\"}\n\t\t\t\t\ttoolTip={(this.expanded ? \"Hide\" : \"Show\") + \" additional filters\"}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tthis.expanded = !this.expanded\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<div class={this.expanded ? \"close\" : \"hidden\"} onClick={() => (this.expanded = !this.expanded)} />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tflex-grow: 5;\n}\n\n","import { Component, Event, EventEmitter, h, Host, Method, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\n\n@Component({\n\ttag: \"smoothly-filter-field\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterField {\n\tinput: HTMLSmoothlyInputElement | undefined\n\t@Prop() criteria: selectively.Criteria\n\t@Event() smoothlyFilterField: EventEmitter<selectively.Rule>\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tawait this.input?.clear()\n\t}\n\tfilterFieldEmit() {\n\t\tthis.smoothlyFilterField.emit(selectively.parse(this.input?.value ?? \"\"))\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host onKeyDown={(e: KeyboardEvent) => e.key == \"Enter\" && this.filterFieldEmit()}>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tname=\"filter\"\n\t\t\t\t\tref={e => (this.input = e)}\n\t\t\t\t\tvalue={this.criteria.toString()}\n\t\t\t\t\tonSmoothlyInputLooks={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyBlur={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.filterFieldEmit()\n\t\t\t\t\t}}\n\t\t\t\t\tonSmoothlyFormDisable={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t}}>\n\t\t\t\t\tFilter\n\t\t\t\t</smoothly-input>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n display: block;\n}\n\n\n","import { Component, Event, EventEmitter, h, Prop, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { tidily } from \"tidily\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-input\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterInput implements Filter {\n\ttype: tidily.Type = \"text\"\n\t@State() needle: selectively.Criteria = \"\"\n\t@Prop() property: string\n\t@Prop() placeholder: string\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\tcomponentDidLoad() {\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0)\n\t\t\tfor (const rule of expression.rules) {\n\t\t\t\tconst criteria = this.isCriteria(rule, this.property)\n\t\t\t\tif (criteria) {\n\t\t\t\t\tthis.needle = criteria.needle ?? \"\"\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\telse\n\t\t\tthis.needle = \"\"\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string): selectively.Includes | undefined {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\t(criteria instanceof selectively.Property &&\n\t\t\t\tcriteria.name == property &&\n\t\t\t\t((criteria.criteria instanceof selectively.Includes && criteria.criteria) ||\n\t\t\t\t\t(criteria.criteria instanceof selectively.Property && this.isCriteria(criteria.criteria, rest.join(\".\"))))) ||\n\t\t\tundefined\n\t\t)\n\t}\n\tinputHandler(event: CustomEvent<Record<string, string>>) {\n\t\tevent.stopPropagation()\n\t\tconst needle = event.detail[this.property]\n\t\tconst manipulate: Filter.Manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\tlet result: selectively.Criteria = criteria\n\t\t\tconst newCriteria = needle ? this.getCriteria(needle) : undefined\n\t\t\tif (result instanceof selectively.And) {\n\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, this.property))\n\t\t\t\t!newCriteria\n\t\t\t\t\t? index != -1 && result.rules.splice(index, 1)\n\t\t\t\t\t: index == -1\n\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t}\n\tprivate getCriteria(needle: string): selectively.Rule | undefined {\n\t\treturn this.property\n\t\t\t.split(\".\")\n\t\t\t.reduceRight((r: selectively.Rule, e) => selectively.property(e, r), selectively.includes(needle))\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, property: string): boolean {\n\t\tconst [key, ...rest] = property.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == key &&\n\t\t\t(rest.length == 0 || (!!criteria.criteria && this.findInstanceOf(criteria.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-input\n\t\t\t\tname={this.property}\n\t\t\t\tvalue={this.needle}\n\t\t\t\ttype={this.type}\n\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\tonSmoothlyBlur={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyFormDisable={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}>\n\t\t\t\t<slot />\n\t\t\t</smoothly-input>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n\n:host>smoothly-picker {\n\tflex-grow: 1;\n\twidth: 12.5em;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { isly } from \"isly\"\nimport { Option } from \"../../../model\"\nimport { Looks } from \"../../input/Looks\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-picker\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterPicker implements Filter {\n\tupdating = false\n\toptions: Map<string, { state: Record<string, any>; selected: (selected: boolean) => void }> = new Map<\n\t\tstring,\n\t\t{ state: Record<string, any>; selected: (selected: boolean) => void }\n\t>()\n\t@Element() element: HTMLSmoothlyFilterPickerElement\n\t@Prop() label: string\n\t@Prop() property: string\n\t@Prop() multiple = false\n\t@Prop() type: \"array\" | \"string\" = \"string\"\n\t@Prop() looks: Looks = \"plain\"\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks) => void>\n\tcomponentDidLoad() {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\t@Listen(\"smoothlyPickerOptionChange\")\n\toptionChangeHandler(event: CustomEvent<Option>) {\n\t\tevent.stopPropagation()\n\t\tthis.options.set(event.detail.value, {\n\t\t\tstate: this.property.split(\".\").reduceRight((r, e) => ({ [e]: r }), event.detail.value),\n\t\t\tselected: event.detail.set.selected,\n\t\t})\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this.looks)\n\t\t}\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tthis.updating = true\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0)\n\t\t\tfor (const option of this.options.values()) {\n\t\t\t\toption.selected(\n\t\t\t\t\texpression.rules.some(\n\t\t\t\t\t\tr =>\n\t\t\t\t\t\t\tthis.isCriteria(r, this.property, option.state) &&\n\t\t\t\t\t\t\t(this.type == \"array\" ? this.findInstanceOf(r, this.property) : r.is(option.state))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t}\n\t\telse\n\t\t\tthis.options.forEach(o => o.selected(false))\n\t\tthis.updating = false\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string, value: Record<string, any> | any): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn criteria instanceof selectively.Property && criteria.name == property\n\t\t\t? this.isCriteria(criteria.criteria, rest.join(\".\"), value[property])\n\t\t\t: this.multiple\n\t\t\t? (criteria instanceof selectively.Within && criteria.value.some(e => e == value)) ||\n\t\t\t (this.type == \"array\" && criteria instanceof selectively.Contains && criteria.criteria.some(e => e == value))\n\t\t\t: criteria instanceof selectively.Is && criteria.value == value\n\t}\n\tpickerHandler(event: CustomEvent<Record<string, unknown>>) {\n\t\tevent.stopPropagation()\n\t\tif (!this.updating) {\n\t\t\tconst argument = event.detail[this.property]\n\t\t\tconst manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\t\tlet result: selectively.Criteria = criteria\n\t\t\t\tconst newCriteria = this.getCriteria(argument)\n\t\t\t\tif (!(result instanceof selectively.Rule))\n\t\t\t\t\tresult = newCriteria ? selectively.and(result, newCriteria) : result\n\t\t\t\telse if (result instanceof selectively.And) {\n\t\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, this.property))\n\t\t\t\t\t!newCriteria && index >= 0\n\t\t\t\t\t\t? result.rules.splice(index, 1)\n\t\t\t\t\t\t: !newCriteria\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: index == -1\n\t\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t}\n\t\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t\t}\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, key: string): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == property &&\n\t\t\t(criteria.criteria instanceof selectively.Within ||\n\t\t\t\tcriteria.criteria instanceof selectively.Is ||\n\t\t\t\tcriteria.criteria instanceof selectively.Contains ||\n\t\t\t\t(criteria.criteria instanceof selectively.Property && this.findInstanceOf(criteria.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\tprivate getCriteria(detail: unknown): selectively.Rule | undefined {\n\t\tlet result: selectively.Criteria | undefined\n\t\tif (this.multiple && isly.string().array({ criteria: \"minLength\", value: 1 }).is(detail))\n\t\t\tresult = this.type == \"array\" ? selectively.contains(detail) : selectively.within(detail)\n\t\telse if (typeof detail == \"string\")\n\t\t\tresult = selectively.is(detail)\n\t\telse\n\t\t\tresult = undefined\n\t\treturn result && this.property.split(\".\").reduceRight((r, e) => selectively.property(e, r), result)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-picker\n\t\t\t\tname={this.property}\n\t\t\t\tlooks={this.looks}\n\t\t\t\tmultiple={this.multiple}\n\t\t\t\tonSmoothlyInputLooks={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyPickerLoaded={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInput={e => this.pickerHandler(e)}>\n\t\t\t\t{this.label && (\n\t\t\t\t\t<span slot=\"label\">\n\t\t\t\t\t\t{[this.label.slice(0, 1).toUpperCase(), this.label.slice(1, this.label.length)].join(\"\")}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t<slot />\n\t\t\t</smoothly-picker>\n\t\t)\n\t}\n}\n",":host {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n\n:host[flip] {\n\ttransform: scaleX(-1);\n}\n","import { Component, Event, EventEmitter, h, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { Icon } from \"../../../model\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-toggle\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterToggle {\n\t@Prop() icon: Icon\n\t@Prop() properties: Record<string, string>\n\t@Prop() toolTip: string\n\t@Prop() not: boolean\n\t@Prop({ reflect: true }) flip = false\n\t@Prop({ mutable: true }) active = false\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\tcomponentWillLoad() {\n\t\tthis.active && this.activeHandler()\n\t}\n\tcomponentDidLoad() {\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0) {\n\t\t\tthis.active = Object.entries(this.properties).every(([key, value]) =>\n\t\t\t\texpression.rules.some(r => {\n\t\t\t\t\tconst criteria = !this.not ? r : r instanceof selectively.Not ? r.criteria : undefined\n\t\t\t\t\treturn value == \"\"\n\t\t\t\t\t\t? !(criteria instanceof selectively.Property && criteria.name == key)\n\t\t\t\t\t\t: this.isCriteria(criteria, key, value)\n\t\t\t\t})\n\t\t\t)\n\t\t} else\n\t\t\tthis.active = false\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string, value: string): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == property &&\n\t\t\t((criteria.criteria instanceof selectively.Is && criteria.criteria.value == value) ||\n\t\t\t\tthis.isCriteria(criteria.criteria, rest.join(\".\"), value))\n\t\t)\n\t}\n\n\tactiveHandler(activate?: true) {\n\t\tconst manipulate: Filter.Manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\tlet result: selectively.Criteria = criteria\n\t\t\tactivate && (this.active = !this.active)\n\t\t\tif (result instanceof selectively.And) {\n\t\t\t\tfor (const [key, value] of Object.entries(this.properties)) {\n\t\t\t\t\tconst newCriteria =\n\t\t\t\t\t\t!this.active || (this.active && value == \"\")\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: this.not\n\t\t\t\t\t\t\t? selectively.not(this.createCriteria(key, value))\n\t\t\t\t\t\t\t: this.createCriteria(key, value)\n\t\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, key))\n\t\t\t\t\t!newCriteria && index >= 0\n\t\t\t\t\t\t? result.rules.splice(index, 1)\n\t\t\t\t\t\t: !newCriteria\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: index == -1\n\t\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\t}\n\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t}\n\tcreateCriteria(key: string, value: string): selectively.Rule {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn selectively.property(\n\t\t\tproperty,\n\t\t\trest.length == 0 ? selectively.is(value) : this.createCriteria(rest.join(\".\"), value)\n\t\t)\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, property: string): boolean {\n\t\tconst check = !this.not ? criteria : criteria instanceof selectively.Not ? criteria.criteria : false\n\t\tconst [key, ...rest] = property.split(\".\")\n\t\treturn (\n\t\t\tcheck instanceof selectively.Property &&\n\t\t\tcheck.name == key &&\n\t\t\t(rest.length == 0 || (!!check.criteria && this.findInstanceOf(check.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-icon\n\t\t\t\tfill=\"clear\"\n\t\t\t\tcolor={this.active ? \"success\" : \"medium\"}\n\t\t\t\tname={(this.active ? `${this.icon}` : `${this.icon}-outline`) as Icon}\n\t\t\t\ttoolTip={this.toolTip}\n\t\t\t\tonClick={() => this.activeHandler(true)}\n\t\t\t/>\n\t\t)\n\t}\n}\n","export var Method;\n(function (Method) {\n function is(value) {\n return (typeof value == \"string\" &&\n (value == \"GET\" ||\n value == \"POST\" ||\n value == \"DELETE\" ||\n value == \"HEAD\" ||\n value == \"PATCH\" ||\n value == \"PUT\" ||\n value == \"OPTIONS\" ||\n value == \"TRACE\" ||\n value == \"CONNECT\"));\n }\n Method.is = is;\n function parse(value) {\n value = value?.toUpperCase();\n return is(value) ? value : undefined;\n }\n Method.parse = parse;\n})(Method || (Method = {}));\n//# sourceMappingURL=Method.js.map","const parsers = {};\nexport function add(parser, ...contentType) {\n contentType.forEach(t => (parsers[t] = parser));\n}\nexport function parse(request) {\n const contentType = request.headers.get(\"Content-Type\");\n const type = contentType && contentType.split(\";\");\n const parser = parsers[type?.[0] ?? \"plain/text\"];\n return parser ? parser(request) : request.text();\n}\n//# sourceMappingURL=Parser.js.map","const serializers = {};\nexport function add(serializer, ...contentType) {\n contentType.forEach(t => (serializers[t] = serializer));\n}\nexport function serialize(body, contentType) {\n const serializer = serializers[contentType?.split(\";\")[0] ?? \"\"];\n return serializer ? serializer(body, contentType) : body;\n}\n//# sourceMappingURL=Serializer.js.map","export function to(name) {\n return name.toLowerCase().replace(/-[a-z]/g, match => match.substring(1).toUpperCase());\n}\nexport function from(name) {\n const result = name.replace(/[A-Z]/g, match => \"-\" + match);\n return result[0].toUpperCase() + result.substring(1);\n}\n//# sourceMappingURL=CamelCase.js.map","import * as CamelCase from \"../CamelCase\";\nconst fields = [\n [\"aIM\", \"A-IM\", 1],\n [\"accept\", \"Accept\", 2],\n [\"acceptCharset\", \"Accept-Charset\", 2],\n [\"acceptDatetime\", \"Accept-Datetime\", 1],\n [\"acceptEncoding\", \"Accept-Encoding\", 2],\n [\"acceptLanguage\", \"Accept-Language\", 2],\n [\"accessControlRequestMethod\", \"Access-Control-Request-Method\", 1],\n [\"accessControlRequestHeaders\", \"Access-Control-Request-Headers\", 1],\n [\"authorization\", \"Authorization\", 1],\n [\"cacheControl\", \"Cache-Control\", 1],\n [\"cfConnectionIp\", \"CF-Connecting-IP\", 1],\n [\"cfIpCountry\", \"CF-IPCountry\", 1],\n [\"connection\", \"Connection\", 1],\n [\"contentLength\", \"Content-Length\", 1],\n [\"contentMD5\", \"Content-MD5\", 1],\n [\"contentType\", \"Content-Type\", 1],\n [\"cookie\", \"Cookie\", 1],\n [\"date\", \"Date\", 1],\n [\"expect\", \"Expect\", 1],\n [\"forwarded\", \"Forwarded\", 1],\n [\"from\", \"From\", 1],\n [\"host\", \"Host\", 1],\n [\"http2Settings\", \"HTTP2-Settings\", 1],\n [\"ifMatch\", \"If-Match\", 2],\n [\"ifModifiedSince\", \"If-Modified-Since\", 1],\n [\"ifNoneMatch\", \"If-None-Match\", 2],\n [\"ifRange\", \"If-Range\", 1],\n [\"ifUnmodifiedSince\", \"If-Unmodified-Since\", 1],\n [\"maxForwards\", \"Max-Forwards\", 1],\n [\"origin\", \"Origin\", 1],\n [\"pragma\", \"Pragma\", 1],\n [\"proxyAuthorization\", \"Proxy-Authorization\", 1],\n [\"range\", \"Range\", 1],\n [\"referer\", \"Referer\", 1],\n [\"te\", \"TE\", 2],\n [\"trailer\", \"Trailer\", 1],\n [\"transferEncoding\", \"Transfer-Encoding\", 1],\n [\"userAgent\", \"User-Agent\", 1],\n [\"upgrade\", \"Upgrade\", 2],\n [\"via\", \"Via\", 2],\n [\"warning\", \"Warning\", 1],\n [\"upgradeInsecureRequests\", \"Upgrade-Insecure-Requests\", 1],\n [\"xRequestedWith\", \"X-Requested-With\", 1],\n [\"dnt\", \"DNT\", 1],\n [\"xForwardedFor\", \"X-Forwarded-For\", 1],\n [\"xForwardedHost\", \"X-Forwarded-Host\", 1],\n [\"xForwardedProto\", \"X-Forwarded-Proto\", 1],\n [\"xMsContinuation\", \"X-Ms-Continuation\", 1],\n [\"frontEndHttps\", \"Front-End-Https\", 1],\n [\"xHttpMethodOverride\", \"X-Http-Method-Override\", 1],\n [\"xAttDeviceId\", \"X-ATT-DeviceId\", 1],\n [\"xWapProfile\", \"X-Wap-Profile\", 1],\n [\"proxyConnection\", \"Proxy-Connection\", 1],\n [\"xCsrfToken\", \"X-Csrf-Token\", 1],\n [\"xCorrelationID\", \"X-Correlation-ID\", 1],\n [\"xModNonce\", \"x-mod-nonce\", 1],\n [\"xModRetry\", \"x-mod-retry\", 1],\n [\"saveData\", \"Save-Data\", 1],\n [\"xAuthToken\", \"X-Auth-Token\", 1],\n [\"xTrackingId\", \"x-tracking-id\", 1],\n];\nexport var Header;\n(function (Header) {\n function is(value) {\n function isString(value) {\n return value == undefined || typeof value == \"string\";\n }\n function isStringArray(value) {\n return value == undefined || (Array.isArray(value) && value.every(v => typeof v == \"string\"));\n }\n return (typeof value == \"object\" && fields.every(field => (field[2] == 1 ? isString : isStringArray)(value[field[0]])));\n }\n Header.is = is;\n function to(header) {\n return Object.fromEntries(Object.entries(header).map(([name, value]) => {\n const field = fields.find(([camelCase, n, l]) => camelCase == name);\n return [field ? field[1] : CamelCase.from(name), Array.isArray(value) ? value.join(\", \") : value];\n }));\n }\n Header.to = to;\n function from(headers) {\n return Object.fromEntries((Array.isArray(headers)\n ? headers.map(([field, ...value]) => [field, value.join(\", \")])\n : isHeaders(headers)\n ? [...headers]\n : Object.entries(headers)).map(([name, value]) => {\n const field = fields.find(([c, n, l]) => name.toLowerCase() == n.toLowerCase());\n return field\n ? [field[0], field[2] == 1 || typeof value != \"string\" ? value : value.split(\",\").map(v => v.trim())]\n : [CamelCase.to(name), value];\n }));\n }\n Header.from = from;\n function toString(header) {\n return Object.entries(header)\n .map(([header, value]) => header + \": \" + value)\n .join(\"\\n\");\n }\n Header.toString = toString;\n function isHeaders(value) {\n return typeof value.entries == \"function\";\n }\n})(Header || (Header = {}));\n//# sourceMappingURL=Header.js.map","import { Method } from \"../Method\";\nimport * as Parser from \"../Parser\";\nimport * as Serializer from \"../Serializer\";\nimport { Header as RequestHeader } from \"./Header\";\nexport var Request;\n(function (Request) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"method\", \"url\", \"parameter\", \"search\", \"remote\", \"header\", \"body\"].some(k => k == key)) &&\n Method.is(value.method) &&\n value.url instanceof URL &&\n typeof value.parameter == \"object\" &&\n Object.entries(value.parameter).every(([parameter, value]) => typeof parameter == \"string\" && typeof value == \"string\") &&\n typeof value.search == \"object\" &&\n Object.entries(value.search).every(([key, value]) => typeof key == \"string\" && typeof value == \"string\") &&\n (value.remote == undefined || typeof value.remote == \"string\") &&\n (value.header == undefined || RequestHeader.is(value.header)));\n }\n Request.is = is;\n async function to(request) {\n const r = is(request) ? request : create(request);\n const header = r.header.contentType?.startsWith(\"multipart/form-data\")\n ? (({ contentType, ...header }) => header)(r.header)\n : r.header;\n return {\n url: r.url.toString(),\n method: r.method,\n headers: RequestHeader.to(header),\n body: [\"GET\", \"HEAD\"].some(v => v == r.method)\n ? undefined\n : await Serializer.serialize(await r.body, r.header.contentType),\n };\n }\n Request.to = to;\n function from(request) {\n const url = new URL(request.url);\n return {\n method: Method.parse(request.method) ?? \"GET\",\n url,\n header: RequestHeader.from(request.headers),\n parameter: {},\n search: Object.fromEntries(url.searchParams.entries()),\n body: Parser.parse(request),\n ...(\"cf\" in request && { cloudflare: request.cf }),\n };\n }\n Request.from = from;\n function create(request) {\n let result;\n if (typeof request == \"string\")\n result = create({ url: request });\n else {\n const url = typeof request.url == \"string\" ? new URL(request.url) : request.url;\n result = {\n method: Method.parse(request.method) ?? \"GET\",\n url,\n parameter: request.parameter ?? {},\n search: { ...request.search, ...Object.fromEntries(url.searchParams.entries()) },\n remote: request.remote,\n header: request.header ?? {},\n body: request.body,\n };\n }\n return result;\n }\n Request.create = create;\n let Header;\n (function (Header) {\n Header.is = RequestHeader.is;\n Header.from = RequestHeader.from;\n Header.to = RequestHeader.to;\n })(Header = Request.Header || (Request.Header = {}));\n})(Request || (Request = {}));\n//# sourceMappingURL=index.js.map","const PlatformRequest = typeof Request != \"undefined\" ? Request : globalThis.Request;\nconst PlatformResponse = typeof Response != \"undefined\" ? Response : globalThis.Response;\nexport { PlatformRequest as Request, PlatformResponse as Response };\n//# sourceMappingURL=Platform.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Socket_instances, _Socket_receiveQueue, _Socket_sendQueue, _Socket_closed, _Socket_backend, _Socket_onMessage, _Socket_onClose, _Socket_handleOpen, _Socket_onOpen;\nexport class Socket {\n get state() {\n return __classPrivateFieldGet(this, _Socket_closed, \"f\") ? \"closed\" : \"opened\";\n }\n set onMessage(value) {\n if (__classPrivateFieldGet(this, _Socket_receiveQueue, \"f\").length && value) {\n __classPrivateFieldGet(this, _Socket_receiveQueue, \"f\").forEach(value);\n __classPrivateFieldSet(this, _Socket_receiveQueue, [], \"f\");\n }\n __classPrivateFieldSet(this, _Socket_onMessage, value, \"f\");\n }\n set onClose(value) {\n if (this.state == \"closed\" && value)\n value();\n __classPrivateFieldSet(this, _Socket_onClose, value, \"f\");\n }\n set onOpen(value) {\n if (this.state == \"opened\" && value)\n value();\n __classPrivateFieldSet(this, _Socket_onOpen, value, \"f\");\n }\n constructor(backend, isOpen) {\n _Socket_instances.add(this);\n _Socket_receiveQueue.set(this, []);\n _Socket_sendQueue.set(this, []);\n _Socket_closed.set(this, false);\n _Socket_backend.set(this, void 0);\n _Socket_onMessage.set(this, void 0);\n _Socket_onClose.set(this, void 0);\n _Socket_onOpen.set(this, void 0);\n __classPrivateFieldSet(this, _Socket_backend, backend, \"f\");\n if (isOpen)\n __classPrivateFieldSet(this, _Socket_sendQueue, undefined, \"f\");\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"open\", () => {\n if (__classPrivateFieldGet(this, _Socket_onOpen, \"f\"))\n __classPrivateFieldGet(this, _Socket_onOpen, \"f\").call(this);\n __classPrivateFieldGet(this, _Socket_instances, \"m\", _Socket_handleOpen).bind(this);\n });\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"message\", async (event) => {\n const data = this.processReceived(event.data);\n __classPrivateFieldGet(this, _Socket_instances, \"m\", _Socket_handleOpen).call(this);\n if (__classPrivateFieldGet(this, _Socket_onMessage, \"f\"))\n __classPrivateFieldGet(this, _Socket_onMessage, \"f\").call(this, data);\n else\n __classPrivateFieldGet(this, _Socket_receiveQueue, \"f\")?.push(data);\n });\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"close\", () => {\n if (__classPrivateFieldGet(this, _Socket_onClose, \"f\"))\n __classPrivateFieldGet(this, _Socket_onClose, \"f\").call(this);\n __classPrivateFieldSet(this, _Socket_closed, true, \"f\");\n });\n }\n send(message) {\n if (__classPrivateFieldGet(this, _Socket_sendQueue, \"f\"))\n __classPrivateFieldGet(this, _Socket_sendQueue, \"f\").push(this.processSend(message));\n else\n __classPrivateFieldGet(this, _Socket_backend, \"f\").send(this.processSend(message));\n }\n}\n_Socket_receiveQueue = new WeakMap(), _Socket_sendQueue = new WeakMap(), _Socket_closed = new WeakMap(), _Socket_backend = new WeakMap(), _Socket_onMessage = new WeakMap(), _Socket_onClose = new WeakMap(), _Socket_onOpen = new WeakMap(), _Socket_instances = new WeakSet(), _Socket_handleOpen = function _Socket_handleOpen() {\n __classPrivateFieldGet(this, _Socket_sendQueue, \"f\")?.forEach(buffer => __classPrivateFieldGet(this, _Socket_backend, \"f\").send(buffer));\n __classPrivateFieldSet(this, _Socket_sendQueue, undefined, \"f\");\n};\n//# sourceMappingURL=Socket.js.map","import { Socket } from \"./Socket\";\nexport class ArrayBuffer extends Socket {\n processReceived(data) {\n return data?.arrayBuffer\n ? data.arrayBuffer()\n : typeof data == \"string\"\n ? new TextEncoder().encode(data).buffer\n : data;\n }\n processSend(data) {\n return data;\n }\n}\n//# sourceMappingURL=ArrayBuffer.js.map","import { Socket } from \"./Socket\";\nexport class Json extends Socket {\n processReceived(data) {\n return JSON.parse(data?.arrayBuffer\n ? new TextDecoder().decode(data.arrayBuffer())\n : typeof data != \"string\"\n ? new TextDecoder().decode(data)\n : data);\n }\n processSend(data) {\n return JSON.stringify(data);\n }\n}\n//# sourceMappingURL=Json.js.map","import { Socket } from \"./Socket\";\nexport class String extends Socket {\n processReceived(data) {\n return data?.arrayBuffer\n ? new TextDecoder().decode(data.arrayBuffer())\n : typeof data != \"string\"\n ? new TextDecoder().decode(data)\n : data;\n }\n processSend(data) {\n return data;\n }\n}\n//# sourceMappingURL=String.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Factory_json, _Factory_string, _Factory_arrayBuffer;\nimport { ArrayBuffer as SocketArrayBuffer } from \"./ArrayBuffer\";\nimport { Json as SocketJson } from \"./Json\";\nimport { String as SocketString } from \"./String\";\nexport class Factory {\n get json() {\n if (!__classPrivateFieldGet(this, _Factory_json, \"f\"))\n __classPrivateFieldSet(this, _Factory_json, new SocketJson(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_json, \"f\");\n }\n get string() {\n if (!__classPrivateFieldGet(this, _Factory_string, \"f\"))\n __classPrivateFieldSet(this, _Factory_string, new SocketString(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_string, \"f\");\n }\n get arrayBuffer() {\n if (!__classPrivateFieldGet(this, _Factory_arrayBuffer, \"f\"))\n __classPrivateFieldSet(this, _Factory_arrayBuffer, new SocketArrayBuffer(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_arrayBuffer, \"f\");\n }\n constructor(backend, isOpen) {\n this.backend = backend;\n this.isOpen = isOpen;\n _Factory_json.set(this, void 0);\n _Factory_string.set(this, void 0);\n _Factory_arrayBuffer.set(this, void 0);\n }\n createResponse(header = {}) {\n return { status: 101, socket: this, header };\n }\n close(code, reason) {\n this.backend.close(code, reason);\n }\n}\n_Factory_json = new WeakMap(), _Factory_string = new WeakMap(), _Factory_arrayBuffer = new WeakMap();\n//# sourceMappingURL=Factory.js.map","import { Factory as SocketFactory } from \"./Factory\";\nexport var Socket;\n(function (Socket) {\n Socket.Factory = SocketFactory;\n})(Socket || (Socket = {}));\n//# sourceMappingURL=index.js.map","import * as CamelCase from \"../CamelCase\";\nconst fields = [\n [\"accessControlAllowOrigin\", \"Access-Control-Allow-Origin\", 1],\n [\"accessControlAllowCredentials\", \"Access-Control-Allow-Credentials\", 1],\n [\"accessControlExposeHeaders\", \"Access-Control-Expose-Headers\", 2],\n [\"accessControlMaxAge\", \"Access-Control-Max-Age\", 1],\n [\"accessControlAllowMethods\", \"Access-Control-Allow-Methods\", 2],\n [\"accessControlAllowHeaders\", \"Access-Control-Allow-Headers\", 2],\n [\"acceptPatch\", \"Accept-Patch\", 1],\n [\"acceptRanges\", \"Accept-Ranges\", 1],\n [\"age\", \"Age\", 1],\n [\"allow\", \"Allow\", 2],\n [\"altSvc\", \"Alt-Svc\", 1],\n [\"cacheControl\", \"Cache-Control\", 1],\n [\"cfConnectionIp\", \"CF-Connecting-IP\", 1],\n [\"cfIpCountry\", \"CF-IPCountry\", 1],\n [\"connection\", \"Connection\", 1],\n [\"contentDisposition\", \"Content-Disposition\", 1],\n [\"contentEncoding\", \"Content-Encoding\", 1],\n [\"contentLanguage\", \"Content-Language\", 2],\n [\"contentLength\", \"Content-Length\", 1],\n [\"contentLocation\", \"Content-Location\", 1],\n [\"contentMD5\", \"Content-MD5\", 1],\n [\"contentRange\", \"Content-Range\", 1],\n [\"contentSecurityPolicy\", \"Content-Security-Policy\", 1],\n [\"contentType\", \"Content-Type\", 1],\n [\"date\", \"Date\", 1],\n [\"deltaBase\", \"Delta-Base\", 1],\n [\"eTag\", \"ETag\", 1],\n [\"expires\", \"Expires\", 1],\n [\"iM\", \"IM\", 1],\n [\"lastModified\", \"Last-Modified\", 1],\n [\"link\", \"Link\", 1],\n [\"location\", \"Location\", 1],\n [\"p3P\", \"P3P\", 1],\n [\"pragma\", \"Pragma\", 1],\n [\"proxyAuthenticate\", \"Proxy-Authenticate\", 1],\n [\"publicKeyPins\", \"Public-Key-Pins\", 1],\n [\"refresh\", \"Refresh\", 1],\n [\"retryAfter\", \"Retry-After\", 1],\n [\"server\", \"Server\", 1],\n [\"setCookie\", \"Set-Cookie\", 1],\n [\"status\", \"Status\", 1],\n [\"strictTransportSecurity\", \"Strict-Transport-Security\", 1],\n [\"timingAllowOrigin\", \"Timing-Allow-Origin\", 2],\n [\"trailer\", \"Trailer\", 1],\n [\"transferEncoding\", \"Transfer-Encoding\", 1],\n [\"tk\", \"Tk\", 1],\n [\"upgrade\", \"Upgrade\", 2],\n [\"vary\", \"Vary\", 2],\n [\"via\", \"Via\", 1],\n [\"warning\", \"Warning\", 1],\n [\"wwwAuthenticate\", \"WWW-Authenticate\", 1],\n [\"xContentDuration\", \"X-Content-Duration\", 1],\n [\"xContentSecurityPolicy\", \"X-Content-Security-Policy\", 1],\n [\"xContentTypeOptions\", \"X-Content-Type-Options\", 1],\n [\"xCorrelationId\", \"X-Correlation-ID\", 1],\n [\"xFrameOptions\", \"X-Frame-Options\", 1],\n [\"xMsContinuation\", \"X-Ms-Continuation\", 1],\n [\"xPoweredBy\", \"X-Powered-By\", 1],\n [\"xRequestId\", \"X-Request-ID\", 1],\n [\"xUACompatible\", \"X-UA-Compatible\", 1],\n [\"xWebkitCsp\", \"X-WebKit-CSP\", 1],\n [\"xXssProtection\", \"X-XSS-Protection\", 1],\n];\nexport var Header;\n(function (Header) {\n function is(value) {\n function isString(value) {\n return value == undefined || typeof value == \"string\";\n }\n function isStringArray(value) {\n return value == undefined || (Array.isArray(value) && value.every(v => typeof v == \"string\"));\n }\n return (typeof value == \"object\" && fields.every(field => (field[2] == 1 ? isString : isStringArray)(value[field[0]])));\n }\n Header.is = is;\n function to(header) {\n return Object.fromEntries(Object.entries(header).map(([name, value]) => {\n const field = fields.find(([camelCase, ..._]) => camelCase == name);\n return [field ? field[1] : CamelCase.from(name), Array.isArray(value) ? value.join(\", \") : value];\n }));\n }\n Header.to = to;\n function from(headers) {\n return Object.fromEntries((Array.isArray(headers)\n ? headers.map(([field, ...value]) => [field, value.join(\", \")])\n : isHeaders(headers)\n ? getEntries(headers)\n : Object.entries(headers)).map(([name, value]) => {\n const field = fields.find(([c, n, l]) => name.toLowerCase() == n.toLowerCase());\n return field\n ? [field[0], field[2] == 1 || typeof value != \"string\" ? value : value.split(\",\").map(v => v.trim())]\n : [CamelCase.to(name), value];\n }));\n }\n Header.from = from;\n function toString(header) {\n return Object.entries(header)\n .map(([header, value]) => header + \": \" + value)\n .join(\"\\n\");\n }\n Header.toString = toString;\n function isHeaders(value) {\n return typeof value.forEach == \"function\";\n }\n function getEntries(headers) {\n const result = [];\n headers.forEach((value, key) => result.push([key, value]));\n return result;\n }\n})(Header || (Header = {}));\n//# sourceMappingURL=Header.js.map","import { Header } from \"./Header\";\nexport var Like;\n(function (Like) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"status\", \"header\", \"body\", \"socket\"].some(property => property == key)) &&\n (value.status == undefined || typeof value.status == \"number\") &&\n (value.header == undefined || Header.is(value.header)) &&\n (value.socket == undefined ||\n (typeof value.socket.close == \"function\" &&\n typeof value.socket.json?.send == \"function\" &&\n typeof value.socket.string?.send == \"function\" &&\n typeof value.socket.arrayBuffer?.send == \"function\")) &&\n (value.status != undefined || value.header != undefined || value.body != undefined));\n }\n Like.is = is;\n})(Like || (Like = {}));\n//# sourceMappingURL=Like.js.map","import * as Parser from \"../Parser\";\nimport * as Platform from \"../Platform\";\nimport * as Serializer from \"../Serializer\";\nimport { Socket } from \"../Socket\";\nimport { Header as ResponseHeader } from \"./Header\";\nimport { Like as ResponseLike } from \"./Like\";\nexport var Response;\n(function (Response) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"status\", \"header\", \"body\", \"socket\"].some(k => k == key)) &&\n (value.status == undefined || typeof value.status == \"number\") &&\n (value.header == undefined || ResponseHeader.is(value.header)) &&\n (value.socket == undefined || value.socket instanceof WebSocket));\n }\n Response.is = is;\n async function to(request) {\n return new Platform.Response(await Serializer.serialize(await request.body, request.header.contentType), {\n status: request.status,\n headers: new Headers(ResponseHeader.to(!request.header.contentType?.startsWith(\"multipart/formdata\")\n ? request.header\n : (({ contentType, ...header }) => header)(request.header))),\n ...(request.socket && {\n webSocket: { ...request.socket.createResponse().socket }?.backend,\n }),\n });\n }\n Response.to = to;\n function from(response) {\n return {\n status: response.status,\n header: ResponseHeader.from(response.headers),\n body: response.status == 101 ? undefined : Parser.parse(response),\n ...(response.webSocket && { socket: new Socket.Factory(response.webSocket) }),\n };\n }\n Response.from = from;\n function create(response, contentType) {\n const result = ResponseLike.is(response)\n ? {\n status: 200,\n header: {},\n body: undefined,\n ...(response.socket && { socket: response.socket }),\n ...response,\n }\n : typeof response?.createResponse == \"function\" && (contentType == undefined || ResponseHeader.is(contentType))\n ? response.createResponse(contentType)\n : {\n status: (typeof response == \"object\" && typeof response.status == \"number\" && response.status) || 200,\n header: typeof response == \"object\"\n ? {\n ...response.header,\n ...((response.status == 301 || response.status == 302) && response.location\n ? { location: response.location }\n : {}),\n }\n : {},\n body: !(typeof response == \"object\" && !Array.isArray(response)) ||\n response instanceof ArrayBuffer ||\n ArrayBuffer.isView(response) ||\n response instanceof FormData\n ? response\n : (({ header, ...body }) => body)(response),\n ...((response.webSocket && { socket: new Socket.Factory(response.webSocket) }) ||\n (response.socket && { socket: response.socket })),\n };\n if (!result.header.contentType)\n switch (typeof result.body) {\n case \"undefined\":\n break;\n default:\n case \"object\":\n result.header.contentType =\n typeof contentType == \"string\"\n ? contentType\n : contentType?.contentType\n ? contentType.contentType\n : result.body instanceof FormData\n ? \"multipart/formdata\"\n : result.body instanceof ArrayBuffer || ArrayBuffer.isView(result.body)\n ? isPdf(result.body)\n ? \"application/pdf\"\n : \"application/octet-stream\"\n : \"application/json; charset=utf-8\";\n break;\n case \"string\":\n result.header.contentType =\n result.body.slice(0, 9).toLowerCase() == \"<!doctype\"\n ? \"text/html; charset=utf-8\"\n : /^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*$/.test(result.body)\n ? \"application/jwt; charset=utf-8\"\n : /^<\\?xml version=(.|\\n)*\\?>(.|\\n)*<svg(.|\\n)*<\\/svg>$/.test(result.body)\n ? \"image/svg+xml\"\n : \"text/plain; charset=utf-8\";\n break;\n }\n return result;\n }\n Response.create = create;\n function isPdf(body) {\n const bytes = new Uint8Array(ArrayBuffer.isView(body) ? body.buffer : body).slice(0, 4);\n return [37, 80, 68, 70].every((current, index) => current == bytes[index]);\n }\n Response.Header = ResponseHeader;\n Response.Like = ResponseLike;\n})(Response || (Response = {}));\n//# sourceMappingURL=index.js.map","import { Request } from \"./Request\";\nimport { Response } from \"./Response\";\nexport const fetch = create(globalThis.fetch);\nfetch.create = create;\nfunction create(fetch) {\n return async (request) => {\n const r = Request.create(request);\n return Response.from(await fetch(r.url.toString(), await Request.to(r)));\n };\n}\n//# sourceMappingURL=fetch.js.map","export var FormData;\n(function (FormData) {\n function to(data) {\n const result = new globalThis.FormData();\n result.append(\"*\", new globalThis.Blob([new TextEncoder().encode(JSON.stringify(toHelperObject(data, \"\", result)))], {\n type: \"application/json; charset=utf-8\",\n }));\n return result;\n }\n FormData.to = to;\n function toHelperObject(data, name, form) {\n return Object.entries(data).reduce((result, [key, value]) => {\n value instanceof Blob\n ? form.append(name ? `${name}.${key}` : key, value)\n : typeof value == \"object\" && value\n ? Array.isArray(value)\n ? (result[key] = toHelperArray(value, name ? `${name}.${key}` : key, form))\n : (result[key] = toHelperObject(value, name ? `${name}.${key}` : key, form))\n : (result[key] = value);\n return result;\n }, {});\n }\n function toHelperArray(data, name, form) {\n return data.reduce((result, value) => {\n typeof value == \"object\" && value\n ? Array.isArray(value)\n ? result.push(toHelperArray(value, name, form))\n : result.push(toHelperObject(value, name, form))\n : result.push(value);\n return result;\n }, []);\n }\n async function from(form) {\n const result = {};\n for (const [name, value] of form.entries())\n await set(result, name.split(\".\"), value);\n return result;\n }\n FormData.from = from;\n async function set(data, [head, ...tail], value) {\n if (tail.length == 0)\n value instanceof Blob && value.type.startsWith(\"application/json\")\n ? head == \"*\"\n ? merge(data, JSON.parse(await value.text()))\n : typeof data[head] == \"object\" && data[head]\n ? merge(data[head], JSON.parse(await value.text()))\n : (data[head] = JSON.parse(await value.text()))\n : (data[head] = value);\n else\n set(typeof data[head] == \"object\" && data[head] ? data[head] : (data[head] = {}), tail, value);\n }\n function merge(target, ...sources) {\n if (sources.length) {\n const [head, ...tail] = sources;\n Object.entries(head).forEach(([key, value]) => isObject(value)\n ? merge(isObject(target[key]) ? target[key] : (target[key] = {}), value)\n : (target[key] = head[key]));\n merge(target, ...tail);\n }\n }\n function isObject(value) {\n return value && typeof value == \"object\" && !Array.isArray(value);\n }\n FormData.isObject = isObject;\n})(FormData || (FormData = {}));\n//# sourceMappingURL=FormData.js.map","export function stringify(data) {\n const result = [];\n const map = (key, value) => {\n switch (typeof value) {\n default:\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n result.push(`${key}=${encodeURIComponent(value.toString())}`);\n break;\n case \"undefined\":\n break;\n case \"object\":\n for (const property in value)\n if (Object.prototype.hasOwnProperty.call(value, property))\n map(key ? key + `[${property}]` : property, value[property]);\n break;\n }\n };\n map(\"\", data);\n return result.join(\"&\");\n}\nexport function parse(data) {\n const convertArrays = (target) => {\n return typeof target == \"object\" &&\n Object.keys(target)\n .sort()\n .every((k, i) => `${k}` == `${i}`)\n ? Object.entries(target)\n .sort()\n .map(entry => (typeof entry[1] == \"object\" ? convertArrays(entry[1]) : entry[1]))\n : typeof target == \"object\"\n ? Object.fromEntries(Object.entries(target).map(entry => [entry[0], convertArrays(entry[1])]))\n : target;\n };\n const insert = (target, key, value) => {\n target[key[0]] = key.length > 1 ? insert(target[key[0]] ?? {}, key.slice(1), value) : value;\n return target;\n };\n const entries = data\n .split(\"&\")\n .map(d => d.split(\"=\", 2))\n .map(([k, v]) => [\n decodeURIComponent(k)\n .split(\"[\")\n .map(p => p.replace(\"]\", \"\")),\n decodeURIComponent(v.replace(/\\+/g, \" \")),\n ]);\n return entries.reduce((result, [key, value]) => convertArrays(insert(result, key, value)), {});\n}\n//# sourceMappingURL=Search.js.map","import { Client } from \"./Client\";\nimport { fetch } from \"./fetch\";\nimport { FormData } from \"./FormData\";\nimport * as http from \"./http\";\nimport { Method } from \"./Method\";\nimport * as Parser from \"./Parser\";\nimport { Request } from \"./Request\";\nimport { Response } from \"./Response\";\nimport * as Search from \"./Search\";\nimport * as Serializer from \"./Serializer\";\nimport { Socket } from \"./Socket\";\nParser.add(async (request) => await request.text(), \"text/plain\", \"text/html\");\nParser.add(async (request) => await request.json(), \"application/json\");\nParser.add(async (request) => await request.arrayBuffer(), \"application/pdf\");\nParser.add(async (request) => FormData.from(await request.formData()), \"multipart/form-data\");\nParser.add(async (request) => Search.parse(await request.text()), \"application/x-www-form-urlencoded\");\nSerializer.add(async (body) => (typeof body == \"string\" ? body : body.toString()), \"text/plain\", \"text/html\");\nSerializer.add(async (body) => JSON.stringify(body), \"application/json\");\nSerializer.add(async (body) => body, \"application/pdf\");\nSerializer.add(async (body) => Search.stringify(body), \"application/x-www-form-urlencoded\");\nSerializer.add(async (body) => (body instanceof globalThis.FormData ? body : FormData.to(body)), \"multipart/form-data\");\nexport { Client, fetch, FormData, Method, Parser, Request, Response, Search, Serializer, Socket, http };\n//# sourceMappingURL=index.js.map","export interface Clearable {\n\tclear(): Promise<void>\n}\nexport namespace Clearable {\n\texport function is(value: Clearable | any): value is Clearable {\n\t\treturn value && typeof value == \"object\" && typeof value.clear == \"function\"\n\t}\n}\n","import { EventEmitter } from \"@stencil/core\"\nimport { isly } from \"isly\"\n\nexport interface Editable extends Editable.Element {\n\tchanged: boolean\n\tvalue?: any\n\tsmoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n}\nexport namespace Editable {\n\texport interface Element {\n\t\tedit: Editable.Edit\n\t\treset: Editable.Reset\n\t\treadonly: boolean\n\t\tlisten: Editable.Listen\n\t\tsetInitialValue: () => void\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tedit: isly.function(),\n\t\t\treadonly: isly.boolean(),\n\t\t\tlisten: isly.function<Listen>(),\n\t\t\treset: isly.function<Reset>(),\n\t\t\tsetInitialValue: isly.function(),\n\t\t})\n\t\texport const is = type.is\n\t}\n\texport type Listen = (property: \"changed\", listener: (parent: Editable) => Promise<void>) => void\n\texport type Edit = (editable: boolean) => Promise<void>\n\texport type Reset = () => Promise<void>\n\tconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\n\texport const type = Element.type.extend<Editable>({\n\t\tchanged: isly.boolean(),\n\t\tvalue: isly.any().optional(),\n\t\tsmoothlyFormDisable: EventEmitter,\n\t})\n\texport const is = type.is\n}\n","import { isly } from \"isly\"\n\nexport type Looks = typeof Looks.types[number]\n\nexport namespace Looks {\n\texport const types = [\"plain\", \"grid\", \"border\", \"line\", \"transparent\"] as const\n\texport const type = isly.string(types)\n\texport const is = type.is\n}\n","import { EventEmitter } from \"@stencil/core\"\nimport { isly } from \"isly\"\nimport { Color, Data } from \"../../model\"\nimport { Looks } from \"./Looks\"\n\nexport interface Input extends Input.Element {\n\tsmoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tsmoothlyInput: EventEmitter<Data>\n\tsmoothlyInputForm?: EventEmitter<Record<string, Data>>\n}\nexport namespace Input {\n\texport interface Element {\n\t\tvalue?: Data[string]\n\t\tcolor?: Color\n\t\tname: string\n\t\tlooks: Looks\n\t\tbinary?: Binary\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tvalue: isly.union<Required<Element>[\"value\"], Data, Data[string]>(Data.type, Data.valueType).optional(),\n\t\t\tcolor: Color.type.optional(),\n\t\t\tname: isly.string(),\n\t\t\tlooks: Looks.type,\n\t\t\tbinary: isly.function<Binary>().optional(),\n\t\t})\n\t\texport const is = type.is\n\t}\n\texport type Binary = () => Promise<boolean>\n\tconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\n\texport const type = Element.type.extend<Input>({\n\t\tsmoothlyInputLoad: EventEmitter,\n\t\tsmoothlyInput: EventEmitter,\n\t\tsmoothlyInputForm: EventEmitter.optional(),\n\t})\n\texport const is = type.is\n}\n","smoothly-form {\n\tdisplay: block;\n\tposition: relative;\n\t--background-color: var(--smoothly-color-shade);\n\t--text-color: var(--smoothly-color-contrast)\n}\nsmoothly-form > form {\n\tposition: relative;\n\tmin-width: 15em;\n}\nsmoothly-form > form > fieldset {\n\tdisplay: flex;\n\tflex-flow: row wrap;\n\tmargin-inline-start: unset;\n\tmargin-inline-end: unset;\n\tpadding-block-start: unset;\n\tpadding-inline-start: unset;\n\tpadding-inline-end: unset;\n\tpadding-block-end: unset;\n\tmin-inline-size: unset;\n\tborder-width: unset;\n\tborder-style: unset;\n\tborder-color: unset;\n\tborder-image: unset;\n}\nsmoothly-form > form > fieldset > * {\n\tflex-grow: 1;\n\tmin-width: 10em;\n\tflex-basis: 40%;\n}\nsmoothly-form[looks=\"grid\"] > form > fieldset {\n\tborder: rgba(var(--text-color), .5) solid .5px;\n}\nsmoothly-form[looks=\"line\"] > form > fieldset,\nsmoothly-form[looks=\"border\"] > form > fieldset,\nsmoothly-form[looks=\"transparent\"] > form > fieldset {\n\tgap: 2em\n}\n\nsmoothly-form > form > div:not(:empty) {\n\tdisplay: flex;\n\tjustify-content: end;\n\tgap: 1em;\n\tmargin-top: 0.5rem;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tWatch,\n} from \"@stencil/core\"\nimport { http } from \"cloudly-http\"\nimport { SmoothlyFormCustomEvent } from \"../../components\"\nimport { Color, Data, Notice, Submit } from \"../../model\"\nimport { Clearable } from \"../input/Clearable\"\nimport { Editable } from \"../input/Editable\"\nimport { Input } from \"../input/Input\"\nimport { Looks } from \"../input/Looks\"\nimport { Submittable } from \"../input/Submittable\"\n\n@Component({\n\ttag: \"smoothly-form\",\n\tstyleUrl: \"style.css\",\n})\nexport class SmoothlyForm implements ComponentWillLoad, Clearable, Submittable, Editable {\n\t@Element() element: HTMLSmoothlyFormElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ mutable: true }) value: Readonly<Data> = {}\n\t@Prop() action?: string\n\t@Prop() type?: \"update\" | \"change\" | \"fetch\" | \"create\" = this.action ? \"create\" : undefined\n\t@Prop({ mutable: true }) readonly = false\n\t@Prop({ reflect: true, attribute: \"looks\" }) looks: Looks = \"plain\"\n\t@Prop() name?: string\n\t@Prop() prevent = true\n\t@Prop({ mutable: true }) changed = false\n\t@State() processing?: Promise<boolean>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyFormInput: EventEmitter<Data>\n\t@Event() smoothlyFormSubmit: EventEmitter<Submit>\n\t@Event() smoothlyFormReset: EventEmitter<void>\n\t@Event() smoothlyFormEdit: EventEmitter<boolean>\n\t@Event() smoothlyFormClear: EventEmitter<void>\n\t@Event() notice: EventEmitter<Notice>\n\tprivate contentType: \"json\" | \"form-data\" = \"json\"\n\tprivate inputs = new Map<string, Input.Element>()\n\tprivate readonlyAtLoad = this.readonly\n\tprivate listeners: {\n\t\tchanged?: ((parent: Editable) => Promise<void>)[]\n\t} = {}\n\n\tcomponentWillLoad(): void {\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t}\n\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\t;(this.listeners[property] ??= []).push(listener)\n\t\tlistener(this)\n\t}\n\t@Watch(\"value\")\n\twatchValue() {\n\t\tthis.changed = [...this.inputs.values()].some(input => (Editable.type.is(input) ? input.changed : true))\n\t\tthis.listeners.changed?.forEach(l => l(this))\n\t}\n\t@Watch(\"readonly\")\n\twatchReadonly() {\n\t\tthis.listeners.changed?.forEach(l => l(this))\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks, color: Color | undefined) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.looks, this.color)\n\t}\n\t@Listen(\"smoothlyInput\")\n\tasync smoothlyInputHandler(event: CustomEvent<Record<string, any>>): Promise<void> {\n\t\tthis.smoothlyFormInput.emit((this.value = Data.merge(this.value, event.detail)))\n\t}\n\t@Listen(\"smoothlyFormSubmit\", { target: \"window\" })\n\twindowSubmitHandler(event: SmoothlyFormCustomEvent<Submit>): void {\n\t\tevent.target == this.element && event.detail.result(false)\n\t}\n\t@Listen(\"smoothlyFormSubmit\")\n\tsubmitHandler(event: SmoothlyFormCustomEvent<Submit>): void {\n\t\tthis.action && event.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyForm) => void>): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this)\n\t\tif (Input.Element.is(event.target)) {\n\t\t\tif (await event.target.binary?.())\n\t\t\t\tthis.contentType = \"form-data\"\n\t\t\tthis.value = Data.merge(this.value, { [event.target.name]: event.target.value })\n\t\t\tthis.inputs.set(event.target.name, event.target)\n\t\t}\n\t}\n\t@Listen(\"smoothlyFormDisable\")\n\tasync smoothlyFormDisableHandler(event: CustomEvent): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.readonly)\n\t}\n\t@Method()\n\tasync submit(remove?: boolean): Promise<void> {\n\t\tthis.processing = new Promise(resolve => {\n\t\t\tthis.smoothlyFormSubmit.emit({ value: this.value, result: resolve, type: remove == true ? \"remove\" : this.type })\n\t\t\tif (this.action) {\n\t\t\t\tconst action = this.action\n\t\t\t\tthis.notice.emit(\n\t\t\t\t\tNotice.execute(\"Submitting form\", async () => {\n\t\t\t\t\t\tconst method = remove\n\t\t\t\t\t\t\t? \"DELETE\"\n\t\t\t\t\t\t\t: !this.type || this.type == \"create\"\n\t\t\t\t\t\t\t? \"POST\"\n\t\t\t\t\t\t\t: this.type == \"change\"\n\t\t\t\t\t\t\t? \"PUT\"\n\t\t\t\t\t\t\t: this.type == \"update\"\n\t\t\t\t\t\t\t? \"PATCH\"\n\t\t\t\t\t\t\t: \"GET\"\n\t\t\t\t\t\tconst response = await http\n\t\t\t\t\t\t\t.fetch(\n\t\t\t\t\t\t\t\thttp.Request.create(\n\t\t\t\t\t\t\t\t\tmethod == \"GET\"\n\t\t\t\t\t\t\t\t\t\t? { method, url: `${action}?${http.Search.stringify(this.value)}` }\n\t\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t\tmethod,\n\t\t\t\t\t\t\t\t\t\t\t\turl: action,\n\t\t\t\t\t\t\t\t\t\t\t\t...(this.value && {\n\t\t\t\t\t\t\t\t\t\t\t\t\theader: { contentType: this.contentType ? \"multipart/form-data\" : \"application/json\" },\n\t\t\t\t\t\t\t\t\t\t\t\t\tbody: this.value,\n\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.catch(() => undefined)\n\t\t\t\t\t\tconst result =\n\t\t\t\t\t\t\t!response || response?.status < 200 || response.status >= 300\n\t\t\t\t\t\t\t\t? ([false, \"Failed to submit form.\"] as const)\n\t\t\t\t\t\t\t\t: ([true, \"Form successfully submitted.\"] as const)\n\t\t\t\t\t\tresolve(result[0])\n\t\t\t\t\t\treturn [...result]\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t\tif (await this.processing) {\n\t\t\tthis.type == \"create\" && (await this.clear())\n\t\t\tthis.setInitialValue()\n\t\t\tthis.readonlyAtLoad && this.edit(!this.readonlyAtLoad)\n\t\t}\n\t\tthis.processing = undefined\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.inputs.forEach(input => {\n\t\t\tClearable.is(input) && input.clear()\n\t\t})\n\t\tthis.smoothlyFormClear.emit()\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.inputs.forEach(input => {\n\t\t\tEditable.Element.type.is(input) && input.edit(editable)\n\t\t})\n\t\tthis.readonly = !editable\n\t\tthis.smoothlyFormEdit.emit(editable)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.inputs.forEach(input => {\n\t\t\tEditable.Element.type.is(input) && input.reset()\n\t\t})\n\t\tthis.changed = [...this.inputs.values()].some(input => (Editable.type.is(input) ? input.changed : true))\n\t\tthis.smoothlyFormReset.emit()\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.inputs.forEach(input => {\n\t\t\tEditable.Element.type.is(input) && input.setInitialValue()\n\t\t})\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-spinner hidden={!this.processing}></smoothly-spinner>\n\t\t\t\t<form onSubmit={!this.prevent ? undefined : e => e.preventDefault()} name={this.name}>\n\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</fieldset>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t\t\t<slot name=\"reset\" />\n\t\t\t\t\t\t<slot name=\"clear\" />\n\t\t\t\t\t\t<slot name=\"submit\" />\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > iframe {\n\tborder: none;\n\tpadding: none;\n\tmargin: none;\n}\n","import { Component, Element, Event, EventEmitter, Method, Prop } from \"@stencil/core\"\nimport { Message, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-frame\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFrame {\n\t@Prop() url: string\n\t@Prop() name: string\n\t@Event() trigger: EventEmitter<Trigger>\n\t@Event() message2: EventEmitter<Message<any>>\n\t@Element() element?: HTMLElement\n\tget contentWindow(): Window | undefined {\n\t\tconst iframe =\n\t\t\tthis.element && this.element.firstElementChild ? (this.element.firstElementChild as HTMLIFrameElement) : undefined\n\t\treturn (iframe && iframe.contentWindow) || undefined\n\t}\n\t@Prop()\n\torigin: string | undefined\n\n\tget defaultOrigin(): string {\n\t\tconst match = this.url.match(/^(([a-z]+\\+)*[a-z]+:\\/\\/)?[^/^\\n]+/)\n\t\treturn match ? match[0] : \"*\"\n\t}\n\tcomponentDidLoad() {\n\t\tif (this.contentWindow)\n\t\t\tMessage.listen(\n\t\t\t\tthis.origin ?? this.defaultOrigin,\n\t\t\t\t(destination: string, content: any) => {\n\t\t\t\t\tif (destination == this.name)\n\t\t\t\t\t\tif (Trigger.is(content))\n\t\t\t\t\t\t\tthis.trigger.emit(content)\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.message2.emit({ destination, content })\n\t\t\t\t},\n\t\t\t\twindow\n\t\t\t)\n\t}\n\tsend(message2: Message<any>): void\n\tsend(destination: string, content: Trigger | any): void\n\t@Method()\n\tasync send(message2: string | Message<any>, content?: Trigger | any): Promise<void> {\n\t\tif (typeof message2 == \"string\")\n\t\t\tMessage.send((this.origin ?? this.defaultOrigin) + \"#\" + message2, content, this.contentWindow)\n\t\telse if (Message.is(message2) && this.contentWindow)\n\t\t\tMessage.send(\n\t\t\t\t{\n\t\t\t\t\tdestination: (this.origin ?? this.defaultOrigin) + \"#\" + message2.destination,\n\t\t\t\t\tcontent: message2.destination,\n\t\t\t\t},\n\t\t\t\tthis.contentWindow\n\t\t\t)\n\t}\n\n\trender() {\n\t\treturn []\n\t}\n}\n",":host[size] {\n\tbackground: none;\n}\n:host {\n\tdisplay: block;\n}\n:host[rotate] {\n\t--rotate: rotate(var(--rotation, 0deg));\n\ttransform: var(--rotate);\n}\n:host[flip=x] {\n\t--flip: scaleX(-1);\n\ttransform: var(--flip);\n}\n:host[flip=y] {\n\t--flip: scaleY(-1);\n\ttransform: var(--flip);\n}\n:host[rotate][flip] {\n\ttransform:var(--rotate)var(--flip);\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host[size=tiny] {\n\twidth: 1.2em;\n\theight: 1.2em;\n}\n:host[size=small] {\n\twidth: 1.4em;\n\theight: 1.4em;\n}\n:host[size=medium] {\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n:host[size=large] {\n\twidth: 2.8em;\n\theight: 2.8em;\n}\n:host[size=xlarge] {\n\twidth: 4em;\n\theight: 4em;\n}\n","import { Component, h, Host, Prop, State, Watch } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Icon } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-icon\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyIcon {\n\t@Prop({ reflect: true }) color: Color\n\t@Prop({ reflect: true }) fill: Fill = \"solid\"\n\t@Prop({ reflect: true }) name: Icon | \"empty\" = \"empty\"\n\t@Prop({ reflect: true }) size: \"tiny\" | \"small\" | \"medium\" | \"large\" = \"medium\"\n\t@Prop({ reflect: true }) rotate?: number\n\t@Prop({ reflect: true }) flip?: \"x\" | \"y\"\n\t@Prop() toolTip?: string\n\t@State() latestPromise: Promise<string | undefined>\n\t@State() document?: string\n\n\tasync componentWillLoad() {\n\t\tawait this.nameChanged()\n\t}\n\t@Watch(\"name\")\n\tasync nameChanged() {\n\t\tif (this.name != \"empty\") {\n\t\t\tconst promise = (this.latestPromise = Icon.load(this.name))\n\t\t\tlet result = await promise\n\t\t\tif (promise == this.latestPromise) {\n\t\t\t\tresult = result\n\t\t\t\t\t?.replace(/(?<=^<svg\\s?)/, `$& role=\"img\"`)\n\t\t\t\t\t.replace(` width=\"512\" height=\"512\"`, \"\")\n\t\t\t\t\t.replace(/stroke:#000;/gi, \"\")\n\t\t\t\tif (!this.toolTip)\n\t\t\t\t\tresult = result?.replace(/<title>.*<\\/title>/, \"\")\n\t\t\t\telse if (result?.includes(\"<title>\"))\n\t\t\t\t\tresult = result.replace(/(<title>).*(<\\/title>)/, `<title>${this.toolTip}</title>`)\n\t\t\t\telse\n\t\t\t\t\tresult = result?.replace(/(.*>)(<\\/svg>$)/, `$1<title>${this.toolTip}</title>$2`)\n\t\t\t\tthis.updateDocument(result)\n\t\t\t}\n\t\t} else\n\t\t\tthis.updateDocument()\n\t}\n\tupdateDocument(document?: string) {\n\t\tthis.document =\n\t\t\tdocument ??\n\t\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n\t\t<title>Empty</title>\n\t\t</svg>`\n\t}\n\n\trender() {\n\t\treturn <Host innerHTML={this.document} style={{ [\"--rotation\"]: `${this.rotate ?? 0}deg` }} />\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\n:host > div {\n\tdisplay: flex;\n\tflex-flow: row wrap;\n}\n:host > div > * {\n\tmargin: 0.5cm;\n}\n","import { Component, h } from \"@stencil/core\"\nimport { Icon } from \"../../model\"\n@Component({\n\ttag: \"smoothly-icon-demo\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyIconDemo {\n\tpage = 0\n\trender() {\n\t\treturn [\n\t\t\t<h1>Icons</h1>,\n\t\t\t<div>\n\t\t\t\t{[\n\t\t\t\t\t\"add-circle\",\n\t\t\t\t\t\"add\",\n\t\t\t\t\t\"airplane\",\n\t\t\t\t\t\"alarm\",\n\t\t\t\t\t\"albums\",\n\t\t\t\t\t\"alert-circle\",\n\t\t\t\t\t\"alert\",\n\t\t\t\t\t\"american-football\",\n\t\t\t\t\t\"analytics\",\n\t\t\t\t\t\"aperture\",\n\t\t\t\t\t\"apps\",\n\t\t\t\t\t\"archive\",\n\t\t\t\t\t\"arrow-back-circle\",\n\t\t\t\t\t\"arrow-back\",\n\t\t\t\t\t\"arrow-down-circle\",\n\t\t\t\t\t\"arrow-down\",\n\t\t\t\t\t\"arrow-forward-circle\",\n\t\t\t\t\t\"arrow-forward\",\n\t\t\t\t\t\"arrow-redo-circle\",\n\t\t\t\t\t\"arrow-redo\",\n\t\t\t\t\t\"arrow-undo-circle\",\n\t\t\t\t\t\"arrow-undo\",\n\t\t\t\t\t\"arrow-up-circle\",\n\t\t\t\t\t\"arrow-up\",\n\t\t\t\t\t\"at-circle\",\n\t\t\t\t\t\"at\",\n\t\t\t\t\t\"attach\",\n\t\t\t\t\t\"backspace\",\n\t\t\t\t\t\"bandage\",\n\t\t\t\t\t\"barbell\",\n\t\t\t\t\t\"bar-chart\",\n\t\t\t\t\t\"barcode\",\n\t\t\t\t\t\"baseball\",\n\t\t\t\t\t\"basketball\",\n\t\t\t\t\t\"basket\",\n\t\t\t\t\t\"battery-charging\",\n\t\t\t\t\t\"battery-dead\",\n\t\t\t\t\t\"battery-full\",\n\t\t\t\t\t\"battery-half\",\n\t\t\t\t\t\"beaker\",\n\t\t\t\t\t\"bed\",\n\t\t\t\t\t\"beer\",\n\t\t\t\t\t\"bicycle\",\n\t\t\t\t\t\"bluetooth\",\n\t\t\t\t\t\"boat\",\n\t\t\t\t\t\"body\",\n\t\t\t\t\t\"bonfire\",\n\t\t\t\t\t\"bookmarks\",\n\t\t\t\t\t\"bookmark\",\n\t\t\t\t\t\"book\",\n\t\t\t\t\t\"briefcase\",\n\t\t\t\t\t\"browsers\",\n\t\t\t\t\t\"brush\",\n\t\t\t\t\t\"bug\",\n\t\t\t\t\t\"build\",\n\t\t\t\t\t\"bulb\",\n\t\t\t\t\t\"business\",\n\t\t\t\t\t\"bus\",\n\t\t\t\t\t\"cafe\",\n\t\t\t\t\t\"calculator\",\n\t\t\t\t\t\"calendar\",\n\t\t\t\t\t\"call\",\n\t\t\t\t\t\"camera-reverse\",\n\t\t\t\t\t\"camera\",\n\t\t\t\t\t\"card\",\n\t\t\t\t\t\"caret-back-circle\",\n\t\t\t\t\t\"caret-back\",\n\t\t\t\t\t\"caret-down-circle\",\n\t\t\t\t\t\"caret-down\",\n\t\t\t\t\t\"caret-forward-circle\",\n\t\t\t\t\t\"caret-forward\",\n\t\t\t\t\t\"caret-up-circle\",\n\t\t\t\t\t\"caret-up\",\n\t\t\t\t\t\"car-sport\",\n\t\t\t\t\t\"car\",\n\t\t\t\t\t\"cart\",\n\t\t\t\t\t\"cash\",\n\t\t\t\t\t\"cellular\",\n\t\t\t\t\t\"chatbox-ellipses\",\n\t\t\t\t\t\"chatbox\",\n\t\t\t\t\t\"chatbubble-ellipses\",\n\t\t\t\t\t\"chatbubbles\",\n\t\t\t\t\t\"chatbubble\",\n\t\t\t\t\t\"checkbox\",\n\t\t\t\t\t\"checkmark-circle\",\n\t\t\t\t\t\"checkmark-done-circle\",\n\t\t\t\t\t\"checkmark-done\",\n\t\t\t\t\t\"checkmark\",\n\t\t\t\t\t\"chevron-back-circle\",\n\t\t\t\t\t\"chevron-back\",\n\t\t\t\t\t\"chevron-down-circle\",\n\t\t\t\t\t\"chevron-down\",\n\t\t\t\t\t\"chevron-forward-circle\",\n\t\t\t\t\t\"chevron-forward\",\n\t\t\t\t\t\"chevron-up-circle\",\n\t\t\t\t\t\"chevron-up\",\n\t\t\t\t\t\"clipboard\",\n\t\t\t\t\t\"close-circle\",\n\t\t\t\t\t\"close\",\n\t\t\t\t\t\"cloud-circle\",\n\t\t\t\t\t\"cloud-done\",\n\t\t\t\t\t\"cloud-download\",\n\t\t\t\t\t\"cloud-offline\",\n\t\t\t\t\t\"cloud\",\n\t\t\t\t\t\"cloud-upload\",\n\t\t\t\t\t\"cloudy-night\",\n\t\t\t\t\t\"cloudy\",\n\t\t\t\t\t\"code-download\",\n\t\t\t\t\t\"code-slash\",\n\t\t\t\t\t\"code\",\n\t\t\t\t\t\"code-working\",\n\t\t\t\t\t\"cog\",\n\t\t\t\t\t\"color-fill\",\n\t\t\t\t\t\"color-filter\",\n\t\t\t\t\t\"color-palette\",\n\t\t\t\t\t\"color-wand\",\n\t\t\t\t\t\"compass\",\n\t\t\t\t\t\"construct\",\n\t\t\t\t\t\"contract\",\n\t\t\t\t\t\"contrast\",\n\t\t\t\t\t\"copy\",\n\t\t\t\t\t\"create\",\n\t\t\t\t\t\"crop\",\n\t\t\t\t\t\"cube\",\n\t\t\t\t\t\"cut\",\n\t\t\t\t\t\"desktop\",\n\t\t\t\t\t\"disc\",\n\t\t\t\t\t\"document-attach\",\n\t\t\t\t\t\"documents\",\n\t\t\t\t\t\"document\",\n\t\t\t\t\t\"document-text\",\n\t\t\t\t\t\"download\",\n\t\t\t\t\t\"duplicate\",\n\t\t\t\t\t\"ear\",\n\t\t\t\t\t\"earth\",\n\t\t\t\t\t\"easel\",\n\t\t\t\t\t\"egg\",\n\t\t\t\t\t\"ellipse\",\n\t\t\t\t\t\"ellipsis-horizontal-circle\",\n\t\t\t\t\t\"ellipsis-horizontal\",\n\t\t\t\t\t\"ellipsis-vertical-circle\",\n\t\t\t\t\t\"ellipsis-vertical\",\n\t\t\t\t\t\"enter\",\n\t\t\t\t\t\"exit\",\n\t\t\t\t\t\"expand\",\n\t\t\t\t\t\"eyedrop\",\n\t\t\t\t\t\"eye-off\",\n\t\t\t\t\t\"eye\",\n\t\t\t\t\t\"fast-food\",\n\t\t\t\t\t\"female\",\n\t\t\t\t\t\"file-tray-full\",\n\t\t\t\t\t\"file-tray-stacked\",\n\t\t\t\t\t\"file-tray\",\n\t\t\t\t\t\"film\",\n\t\t\t\t\t\"filter\",\n\t\t\t\t\t\"finger-print\",\n\t\t\t\t\t\"fitness\",\n\t\t\t\t\t\"flag\",\n\t\t\t\t\t\"flame\",\n\t\t\t\t\t\"flashlight\",\n\t\t\t\t\t\"flash-off\",\n\t\t\t\t\t\"flash\",\n\t\t\t\t\t\"flask\",\n\t\t\t\t\t\"flower\",\n\t\t\t\t\t\"folder-open\",\n\t\t\t\t\t\"folder\",\n\t\t\t\t\t\"football\",\n\t\t\t\t\t\"funnel\",\n\t\t\t\t\t\"game-controller\",\n\t\t\t\t\t\"gift\",\n\t\t\t\t\t\"git-branch\",\n\t\t\t\t\t\"git-commit\",\n\t\t\t\t\t\"git-compare\",\n\t\t\t\t\t\"git-merge\",\n\t\t\t\t\t\"git-network\",\n\t\t\t\t\t\"git-pull-request\",\n\t\t\t\t\t\"glasses\",\n\t\t\t\t\t\"globe\",\n\t\t\t\t\t\"golf\",\n\t\t\t\t\t\"grid\",\n\t\t\t\t\t\"hammer\",\n\t\t\t\t\t\"hand-left\",\n\t\t\t\t\t\"hand-right\",\n\t\t\t\t\t\"happy\",\n\t\t\t\t\t\"hardware-chip\",\n\t\t\t\t\t\"headset\",\n\t\t\t\t\t\"heart-circle\",\n\t\t\t\t\t\"heart-dislike-circle\",\n\t\t\t\t\t\"heart-dislike\",\n\t\t\t\t\t\"heart-half\",\n\t\t\t\t\t\"heart\",\n\t\t\t\t\t\"help-buoy\",\n\t\t\t\t\t\"help-circle\",\n\t\t\t\t\t\"help\",\n\t\t\t\t\t\"home\",\n\t\t\t\t\t\"hourglass\",\n\t\t\t\t\t\"ice-cream\",\n\t\t\t\t\t\"images\",\n\t\t\t\t\t\"image\",\n\t\t\t\t\t\"infinite\",\n\t\t\t\t\t\"information-circle\",\n\t\t\t\t\t\"information\",\n\t\t\t\t\t\"journal\",\n\t\t\t\t\t\"keypad\",\n\t\t\t\t\t\"key\",\n\t\t\t\t\t\"language\",\n\t\t\t\t\t\"laptop\",\n\t\t\t\t\t\"layers\",\n\t\t\t\t\t\"leaf\",\n\t\t\t\t\t\"library\",\n\t\t\t\t\t\"link\",\n\t\t\t\t\t\"list-circle\",\n\t\t\t\t\t\"list\",\n\t\t\t\t\t\"locate\",\n\t\t\t\t\t\"location\",\n\t\t\t\t\t\"lock-closed\",\n\t\t\t\t\t\"lock-open\",\n\t\t\t\t\t\"log-in\",\n\t\t\t\t\t\"logo-amazon\",\n\t\t\t\t\t\"logo-amplify\",\n\t\t\t\t\t\"logo-android\",\n\t\t\t\t\t\"logo-angular\",\n\t\t\t\t\t\"logo-apple-appstore\",\n\t\t\t\t\t\"logo-apple\",\n\t\t\t\t\t\"logo-behance\",\n\t\t\t\t\t\"logo-bitbucket\",\n\t\t\t\t\t\"logo-bitcoin\",\n\t\t\t\t\t\"logo-buffer\",\n\t\t\t\t\t\"logo-capacitor\",\n\t\t\t\t\t\"logo-chrome\",\n\t\t\t\t\t\"logo-closed-captioning\",\n\t\t\t\t\t\"logo-codepen\",\n\t\t\t\t\t\"logo-css3\",\n\t\t\t\t\t\"logo-designernews\",\n\t\t\t\t\t\"logo-docker\",\n\t\t\t\t\t\"logo-dribbble\",\n\t\t\t\t\t\"logo-dropbox\",\n\t\t\t\t\t\"logo-edge\",\n\t\t\t\t\t\"logo-electron\",\n\t\t\t\t\t\"logo-euro\",\n\t\t\t\t\t\"logo-facebook\",\n\t\t\t\t\t\"logo-firebase\",\n\t\t\t\t\t\"logo-firefox\",\n\t\t\t\t\t\"logo-flickr\",\n\t\t\t\t\t\"logo-foursquare\",\n\t\t\t\t\t\"logo-github\",\n\t\t\t\t\t\"logo-gitlab\",\n\t\t\t\t\t\"logo-google-playstore\",\n\t\t\t\t\t\"logo-google\",\n\t\t\t\t\t\"logo-hackernews\",\n\t\t\t\t\t\"logo-html5\",\n\t\t\t\t\t\"logo-instagram\",\n\t\t\t\t\t\"logo-ionic\",\n\t\t\t\t\t\"logo-ionitron\",\n\t\t\t\t\t\"logo-javascript\",\n\t\t\t\t\t\"logo-laravel\",\n\t\t\t\t\t\"logo-linkedin\",\n\t\t\t\t\t\"logo-markdown\",\n\t\t\t\t\t\"logo-medium\",\n\t\t\t\t\t\"logo-nodejs\",\n\t\t\t\t\t\"logo-no-smoking\",\n\t\t\t\t\t\"logo-npm\",\n\t\t\t\t\t\"logo-octocat\",\n\t\t\t\t\t\"logo-paypal\",\n\t\t\t\t\t\"logo-pinterest\",\n\t\t\t\t\t\"logo-playstation\",\n\t\t\t\t\t\"logo-pwa\",\n\t\t\t\t\t\"logo-python\",\n\t\t\t\t\t\"logo-react\",\n\t\t\t\t\t\"logo-reddit\",\n\t\t\t\t\t\"logo-rss\",\n\t\t\t\t\t\"logo-sass\",\n\t\t\t\t\t\"logo-skype\",\n\t\t\t\t\t\"logo-slack\",\n\t\t\t\t\t\"logo-snapchat\",\n\t\t\t\t\t\"logo-soundcloud\",\n\t\t\t\t\t\"logo-stackoverflow\",\n\t\t\t\t\t\"logo-steam\",\n\t\t\t\t\t\"logo-stencil\",\n\t\t\t\t\t\"logo-tiktok\",\n\t\t\t\t\t\"logo-tumblr\",\n\t\t\t\t\t\"logo-tux\",\n\t\t\t\t\t\"logo-twitch\",\n\t\t\t\t\t\"logo-twitter\",\n\t\t\t\t\t\"logo-usd\",\n\t\t\t\t\t\"log-out\",\n\t\t\t\t\t\"logo-web-component\",\n\t\t\t\t\t\"logo-venmo\",\n\t\t\t\t\t\"logo-whatsapp\",\n\t\t\t\t\t\"logo-vimeo\",\n\t\t\t\t\t\"logo-windows\",\n\t\t\t\t\t\"logo-vk\",\n\t\t\t\t\t\"logo-wordpress\",\n\t\t\t\t\t\"logo-vue\",\n\t\t\t\t\t\"logo-xbox\",\n\t\t\t\t\t\"logo-xing\",\n\t\t\t\t\t\"logo-yahoo\",\n\t\t\t\t\t\"logo-yen\",\n\t\t\t\t\t\"logo-youtube\",\n\t\t\t\t\t\"magnet\",\n\t\t\t\t\t\"mail-open\",\n\t\t\t\t\t\"mail\",\n\t\t\t\t\t\"mail-unread\",\n\t\t\t\t\t\"male-female\",\n\t\t\t\t\t\"male\",\n\t\t\t\t\t\"man\",\n\t\t\t\t\t\"map\",\n\t\t\t\t\t\"medal\",\n\t\t\t\t\t\"medical\",\n\t\t\t\t\t\"medkit\",\n\t\t\t\t\t\"megaphone\",\n\t\t\t\t\t\"menu\",\n\t\t\t\t\t\"mic-circle\",\n\t\t\t\t\t\"mic-off-circle\",\n\t\t\t\t\t\"mic-off\",\n\t\t\t\t\t\"mic\",\n\t\t\t\t\t\"moon\",\n\t\t\t\t\t\"move\",\n\t\t\t\t\t\"musical-notes\",\n\t\t\t\t\t\"musical-note\",\n\t\t\t\t\t\"navigate-circle\",\n\t\t\t\t\t\"navigate\",\n\t\t\t\t\t\"newspaper\",\n\t\t\t\t\t\"notifications-circle\",\n\t\t\t\t\t\"notifications-off-circle\",\n\t\t\t\t\t\"notifications-off\",\n\t\t\t\t\t\"notifications\",\n\t\t\t\t\t\"nuclear\",\n\t\t\t\t\t\"nutrition\",\n\t\t\t\t\t\"open\",\n\t\t\t\t\t\"options\",\n\t\t\t\t\t\"paper-plane\",\n\t\t\t\t\t\"partly-sunny\",\n\t\t\t\t\t\"pause-circle\",\n\t\t\t\t\t\"pause\",\n\t\t\t\t\t\"paw\",\n\t\t\t\t\t\"pencil\",\n\t\t\t\t\t\"people-circle\",\n\t\t\t\t\t\"people\",\n\t\t\t\t\t\"person-add\",\n\t\t\t\t\t\"person-circle\",\n\t\t\t\t\t\"person-remove\",\n\t\t\t\t\t\"person\",\n\t\t\t\t\t\"phone-landscape\",\n\t\t\t\t\t\"phone-portrait\",\n\t\t\t\t\t\"pie-chart\",\n\t\t\t\t\t\"pin\",\n\t\t\t\t\t\"pint\",\n\t\t\t\t\t\"pizza\",\n\t\t\t\t\t\"planet\",\n\t\t\t\t\t\"play-back-circle\",\n\t\t\t\t\t\"play-back\",\n\t\t\t\t\t\"play-circle\",\n\t\t\t\t\t\"play-forward-circle\",\n\t\t\t\t\t\"play-forward\",\n\t\t\t\t\t\"play-skip-back-circle\",\n\t\t\t\t\t\"play-skip-back\",\n\t\t\t\t\t\"play-skip-forward-circle\",\n\t\t\t\t\t\"play-skip-forward\",\n\t\t\t\t\t\"play\",\n\t\t\t\t\t\"podium\",\n\t\t\t\t\t\"power\",\n\t\t\t\t\t\"pricetags\",\n\t\t\t\t\t\"pricetag\",\n\t\t\t\t\t\"print\",\n\t\t\t\t\t\"pulse\",\n\t\t\t\t\t\"push\",\n\t\t\t\t\t\"qr-code\",\n\t\t\t\t\t\"radio-button-off\",\n\t\t\t\t\t\"radio-button-on\",\n\t\t\t\t\t\"radio\",\n\t\t\t\t\t\"rainy\",\n\t\t\t\t\t\"reader\",\n\t\t\t\t\t\"receipt\",\n\t\t\t\t\t\"recording\",\n\t\t\t\t\t\"refresh-circle\",\n\t\t\t\t\t\"refresh\",\n\t\t\t\t\t\"reload-circle\",\n\t\t\t\t\t\"reload\",\n\t\t\t\t\t\"remove-circle\",\n\t\t\t\t\t\"remove\",\n\t\t\t\t\t\"reorder-four\",\n\t\t\t\t\t\"reorder-three\",\n\t\t\t\t\t\"reorder-two\",\n\t\t\t\t\t\"repeat\",\n\t\t\t\t\t\"resize\",\n\t\t\t\t\t\"restaurant\",\n\t\t\t\t\t\"return-down-back\",\n\t\t\t\t\t\"return-down-forward\",\n\t\t\t\t\t\"return-up-back\",\n\t\t\t\t\t\"return-up-forward\",\n\t\t\t\t\t\"ribbon\",\n\t\t\t\t\t\"rocket\",\n\t\t\t\t\t\"rose\",\n\t\t\t\t\t\"sad\",\n\t\t\t\t\t\"save\",\n\t\t\t\t\t\"scan-circle\",\n\t\t\t\t\t\"scan\",\n\t\t\t\t\t\"school\",\n\t\t\t\t\t\"search-circle\",\n\t\t\t\t\t\"search\",\n\t\t\t\t\t\"send\",\n\t\t\t\t\t\"server\",\n\t\t\t\t\t\"settings\",\n\t\t\t\t\t\"shapes\",\n\t\t\t\t\t\"share-social\",\n\t\t\t\t\t\"share\",\n\t\t\t\t\t\"shield-checkmark\",\n\t\t\t\t\t\"shield\",\n\t\t\t\t\t\"shirt\",\n\t\t\t\t\t\"shuffle\",\n\t\t\t\t\t\"skull\",\n\t\t\t\t\t\"snow\",\n\t\t\t\t\t\"speedometer\",\n\t\t\t\t\t\"square\",\n\t\t\t\t\t\"star-half\",\n\t\t\t\t\t\"star\",\n\t\t\t\t\t\"stats-chart\",\n\t\t\t\t\t\"stop-circle\",\n\t\t\t\t\t\"stop\",\n\t\t\t\t\t\"stopwatch\",\n\t\t\t\t\t\"subway\",\n\t\t\t\t\t\"sunny\",\n\t\t\t\t\t\"swap-horizontal\",\n\t\t\t\t\t\"swap-vertical\",\n\t\t\t\t\t\"sync-circle\",\n\t\t\t\t\t\"sync\",\n\t\t\t\t\t\"tablet-landscape\",\n\t\t\t\t\t\"tablet-portrait\",\n\t\t\t\t\t\"tennisball\",\n\t\t\t\t\t\"terminal\",\n\t\t\t\t\t\"text\",\n\t\t\t\t\t\"thermometer\",\n\t\t\t\t\t\"thumbs-down\",\n\t\t\t\t\t\"thumbs-up\",\n\t\t\t\t\t\"thunderstorm\",\n\t\t\t\t\t\"timer\",\n\t\t\t\t\t\"time\",\n\t\t\t\t\t\"today\",\n\t\t\t\t\t\"toggle\",\n\t\t\t\t\t\"trail-sign\",\n\t\t\t\t\t\"train\",\n\t\t\t\t\t\"transgender\",\n\t\t\t\t\t\"trash-bin\",\n\t\t\t\t\t\"trash\",\n\t\t\t\t\t\"trending-down\",\n\t\t\t\t\t\"trending-up\",\n\t\t\t\t\t\"triangle\",\n\t\t\t\t\t\"trophy\",\n\t\t\t\t\t\"tv\",\n\t\t\t\t\t\"umbrella\",\n\t\t\t\t\t\"walk\",\n\t\t\t\t\t\"wallet\",\n\t\t\t\t\t\"warning\",\n\t\t\t\t\t\"watch\",\n\t\t\t\t\t\"water\",\n\t\t\t\t\t\"videocam\",\n\t\t\t\t\t\"wifi\",\n\t\t\t\t\t\"wine\",\n\t\t\t\t\t\"volume-high\",\n\t\t\t\t\t\"volume-low\",\n\t\t\t\t\t\"volume-medium\",\n\t\t\t\t\t\"volume-mute\",\n\t\t\t\t\t\"volume-off\",\n\t\t\t\t\t\"woman\",\n\t\t\t\t]\n\t\t\t\t\t.slice(this.page * 100, 100)\n\t\t\t\t\t.map(name => (\n\t\t\t\t\t\t<smoothly-icon name={name as Icon} toolTip={name}></smoothly-icon>\n\t\t\t\t\t))}\n\t\t\t</div>,\n\t\t\t<h3>Icon transforms</h3>,\n\t\t\t<div>\n\t\t\t\t<smoothly-icon name={\"bicycle\"} toolTip={\"Normal\"}></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"bicycle\"} toolTip={\"Flipped horizontally\"} flip=\"x\"></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"bicycle\"} toolTip={\"Flipped vertically\"} flip=\"y\"></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"bicycle\"} toolTip={\"Rotated 180deg\"} rotate={180}></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"wine\"} toolTip={\"Rotated 60deg\"} rotate={60}></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"wine\"} toolTip={\"Rotated 213deg\"} rotate={213}></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"wine\"} toolTip={\"Rotated -60deg\"} rotate={-60}></smoothly-icon>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={\"musical-notes\"}\n\t\t\t\t\ttoolTip={\"Flipped horizontally and rotated 45deg\"}\n\t\t\t\t\trotate={45}\n\t\t\t\t\tflip=\"x\"></smoothly-icon>\n\t\t\t</div>,\n\t\t]\n\t}\n}\n","@import \"./shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tfont-weight: var(--smoothly-font-weight);\n\toverflow: hidden;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tcolor: rgb(var(--text-color, var(--smoothly-color-contrast)));\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > div:nth-child(2) {\n\tmargin-left: 0.2em;\n}\n:host > div {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n:host > div > label {\n\tposition: absolute;\n\tleft: 0.4em;\n\ttop: 0.6em;\n\topacity: 0.8;\n\tuser-select: none;\n\tcursor: inherit;\n\ttransform-origin: top left;\n\ttransition: transform 100ms ease;\n}\n:host:not([show-label]) > div > label {\n\tdisplay: none;\n}\n:host:not([show-label]) > div > input {\n\tpadding: 0.7em 0.7em 0.7em 0.8em;\n}\n:host > div > input {\n\tpadding: 1.2em 0.7em 0.2em 0.8em;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0;\n\tz-index: 1;\n\tposition: relative;\n\tfont-size: 1rem;\n\tfont-family: var(--smoothly-font-family);\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n:host > div > smoothly-icon {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 0.2em;\n\ttop: 0.6em;\n}\n\n:host > div > input:invalid + label + smoothly-icon {\n\tdisplay: block;\n}\n:host > div > label {\n\tz-index: 1;\n\tpointer-events: none;\n}\n:host:not([readonly]):not(.has-value)[placeholder] > div > label,\n:host.has-value > div > label,\n:host:not([readonly]):not(.has-value):focus-within > div > label {\n\ttop: 0.4em;\n\ttransform: scale(0.6);\n}\n:host > div > input:focus {\n\toutline: none;\n}\n:host > div > input:-webkit-autofill,\n:host > div > input:-webkit-autofill:hover,\n:host > div > input:-webkit-autofill:focus,\n:host > div > input:-webkit-autofill:active {\n\tbox-shadow: 0 0 0 40em rgb(var(--background-color, var(--smoothly-color-shade))) inset;\n\t-webkit-box-shadow: 0 0 0 40em rgb(var(--background-color, var(--smoothly-color-shade))) inset;\n}\n:host > div > input:-webkit-autofill,\n:host > div > input:-webkit-autofill + label {\n\t-webkit-text-fill-color: rgb(var(--text-color, var(--smoothly-color-contrast)));\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { tidily } from \"tidily\"\nimport { Color } from \"../../model\"\nimport { Clearable } from \"./Clearable\"\nimport { Editable } from \"./Editable\"\nimport { Input } from \"./Input\"\nimport { Looks } from \"./Looks\"\n\n@Component({\n\ttag: \"smoothly-input\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInput implements Clearable, Input, Editable {\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop() delay = 0\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) value: any\n\t@Prop({ reflect: true }) type: tidily.Type = \"text\"\n\t@Prop({ reflect: true }) required = false\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop() autocomplete = true\n\t@Prop({ reflect: true }) placeholder: string | undefined\n\t@Prop() disabled = false\n\t@Prop({ mutable: true, reflect: true }) readonly = false\n\t@Prop({ reflect: true }) currency?: isoly.Currency\n\t@Prop({ mutable: true }) changed = false\n\t@State() formatter: tidily.Formatter & tidily.Converter<any>\n\t@State() initialValue?: any\n\tprivate inputElement: HTMLInputElement\n\t/** On re-render the input will blur. This boolean is meant to keep track of if input should keep its focus. */\n\tprivate keepFocusOnReRender = false\n\tprivate lastValue: any\n\tprivate state: Readonly<tidily.State> & Readonly<tidily.Settings>\n\tprivate abortInputEvent?: () => void\n\tprivate uneditable = this.readonly\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyBlur: EventEmitter<void>\n\t@Event() smoothlyChange: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync SmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInput) => void>): Promise<void> {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name == this.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Watch(\"type\")\n\ttypeChange(): void {\n\t\tlet result: (tidily.Formatter & tidily.Converter<any>) | undefined\n\t\tswitch (this.type) {\n\t\t\tcase \"price\":\n\t\t\t\tresult = tidily.get(\"price\", this.currency)\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = tidily.get(this.type, getLocale())\n\t\t\t\tbreak\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tthis.formatter = result || tidily.get(\"text\")!\n\t}\n\tprivate newState(state: tidily.State) {\n\t\treturn this.formatter.format(tidily.StateEditor.copy(this.formatter.unformat(tidily.StateEditor.copy(state))))\n\t}\n\t@Watch(\"value\")\n\tvalueWatcher(value: any, before: any) {\n\t\tthis.changed = this.initialValue !== this.value\n\t\tif (this.lastValue != value) {\n\t\t\tthis.lastValue = value\n\t\t\tthis.state = {\n\t\t\t\t...this.state,\n\t\t\t\tvalue: this.newState({ value: this.formatter.toString(value), selection: this.state.selection }).value,\n\t\t\t}\n\t\t}\n\t\tif (value != before) {\n\t\t\tif (typeof value == \"string\")\n\t\t\t\tvalue = value.trim()\n\t\t\tthis.smoothlyInputEmit(value)\n\t\t}\n\t\tthis.listener.changed?.(this)\n\t}\n\tasync smoothlyInputEmit(value: any): Promise<void> {\n\t\tthis.abortInputEvent?.()\n\t\tconst timeout = window.setTimeout(() => {\n\t\t\tthis.abortInputEvent = undefined\n\t\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\t}, this.delay * 1000)\n\t\tthis.abortInputEvent = () => {\n\t\t\tthis.abortInputEvent = undefined\n\t\t\twindow.clearTimeout(timeout)\n\t\t}\n\t}\n\t@Watch(\"readonly\")\n\twatchingReadonly() {\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Watch(\"currency\")\n\tonCurrency() {\n\t\tthis.state = {\n\t\t\t...this.state,\n\t\t\tvalue: this.newState({ value: this.formatter.toString(this.value), selection: this.state.selection }).value,\n\t\t\tpattern: this.newState({ value: this.formatter.toString(this.value), selection: this.state.selection }).pattern,\n\t\t}\n\t}\n\tcomponentWillLoad() {\n\t\tthis.typeChange()\n\t\tconst value = this.formatter.toString(this.value) || \"\"\n\t\tthis.lastValue = this.initialValue = this.value\n\t\tconst start = value.length\n\t\tthis.state = this.newState({\n\t\t\tvalue,\n\t\t\tselection: { start, end: start, direction: \"none\" },\n\t\t})\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidRender() {\n\t\tif (this.keepFocusOnReRender) {\n\t\t\tthis.inputElement.focus()\n\t\t\tthis.keepFocusOnReRender = false\n\t\t}\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\t!this.uneditable && (this.value = undefined)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\t!this.uneditable && (this.readonly = !editable)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\t!this.uneditable && (this.value = this.initialValue)\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.changed = false\n\t\tthis.initialValue = this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\t@Method()\n\tasync getFormData(name: string): Promise<Record<string, any>> {\n\t\tconst result: Record<string, any> = {}\n\t\tconst form = document.forms.namedItem(name)\n\t\tif (form) {\n\t\t\tconst elements = form.elements\n\t\t\tfor (let i = 0; i < elements.length; i++) {\n\t\t\t\tconst element = elements.item(i)\n\t\t\t\tif (this.hasNameAndValue(element) && element.name)\n\t\t\t\t\tresult[element.name] = element.value\n\t\t\t}\n\t\t\t// Overwrite values with values from smoothly-input\n\t\t\tconst smoothlyInputs = form.getElementsByTagName(\"smoothly-input\")\n\t\t\tfor (let i = 0; i < smoothlyInputs.length; i++) {\n\t\t\t\tconst element = smoothlyInputs.item(i)\n\t\t\t\tif (this.hasNameAndValue(element) && element.name)\n\t\t\t\t\tresult[element.name] = element.value\n\t\t\t}\n\t\t}\n\t\treturn result\n\t}\n\thasNameAndValue(element: any): element is { name: string; value: string } {\n\t\treturn (\n\t\t\ttypeof (element as { name?: string }).name == \"string\" && typeof (element as { value?: string }).value == \"string\"\n\t\t)\n\t}\n\t@Method()\n\tasync setKeepFocusOnReRender(keepFocus: boolean) {\n\t\tthis.keepFocusOnReRender = keepFocus\n\t}\n\t@Method()\n\tasync setSelectionRange(start: number, end: number, direction?: tidily.Direction) {\n\t\tthis.state = this.newState({\n\t\t\t...this.state,\n\t\t\tselection: { start, end, direction: direction ?? this.state.selection.direction },\n\t\t})\n\t\tconst after = this.formatter.format(\n\t\t\ttidily.StateEditor.copy(this.formatter.unformat(tidily.StateEditor.copy({ ...this.state })))\n\t\t)\n\t\tthis.updateBackend(after, this.inputElement)\n\t}\n\tonBlur(event: FocusEvent) {\n\t\tthis.smoothlyBlur.emit()\n\t\tif (this.abortInputEvent) {\n\t\t\tthis.abortInputEvent()\n\t\t\tconst value = typeof this.value == \"string\" ? this.value.trim() : this.value\n\t\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\t}\n\t\tif (this.initialValue != this.value)\n\t\t\tthis.smoothlyChange.emit({ [this.name]: this.value })\n\t}\n\tonFocus(event: FocusEvent) {\n\t\tconst after = this.formatter.format(\n\t\t\ttidily.StateEditor.copy(this.formatter.unformat(tidily.StateEditor.copy({ ...this.state })))\n\t\t)\n\t\tif (event.target)\n\t\t\tthis.updateBackend(after, event.target as HTMLInputElement, false)\n\t}\n\tonClick(event: MouseEvent) {\n\t\tconst backend = event.target as HTMLInputElement\n\t\tthis.state = {\n\t\t\t...this.state,\n\t\t\tvalue: backend.value,\n\t\t\tselection: {\n\t\t\t\tstart: backend.selectionStart ?? backend.value.length,\n\t\t\t\tend: backend.selectionEnd ?? backend.value.length,\n\t\t\t\tdirection: backend.selectionDirection ?? \"none\",\n\t\t\t},\n\t\t}\n\t\tconst after = this.newState({ ...this.state })\n\t\tthis.updateBackend(after, backend)\n\t}\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (event.key && !(event.key == \"Unidentified\")) {\n\t\t\tconst backend = event.target as HTMLInputElement\n\t\t\tthis.state = {\n\t\t\t\t...this.state,\n\t\t\t\tvalue: backend.value,\n\t\t\t\tselection: {\n\t\t\t\t\tstart: backend.selectionStart ?? backend.value.length,\n\t\t\t\t\tend: backend.selectionEnd ?? backend.value.length,\n\t\t\t\t\tdirection: backend.selectionDirection ?? \"none\",\n\t\t\t\t},\n\t\t\t}\n\t\t\tif (\n\t\t\t\t(!((event.ctrlKey || event.metaKey) && (event.key == \"v\" || event.key == \"x\" || event.key == \"c\")) &&\n\t\t\t\t\tevent.key.length == 1) ||\n\t\t\t\tevent.key == \"ArrowLeft\" ||\n\t\t\t\tevent.key == \"ArrowRight\" ||\n\t\t\t\tevent.key == \"Delete\" ||\n\t\t\t\tevent.key == \"Backspace\" ||\n\t\t\t\tevent.key == \"Home\" ||\n\t\t\t\tevent.key == \"End\"\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.processKey(event, backend)\n\t\t\t} else if (event.key == \"ArrowUp\" || event.key == \"ArrowDown\")\n\t\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\tonPaste(event: ClipboardEvent) {\n\t\tevent.preventDefault()\n\t\tlet pasted = event.clipboardData ? event.clipboardData.getData(\"text\") : \"\"\n\t\tconst backend = event.target as HTMLInputElement\n\t\tpasted = this.expiresAutocompleteFix(backend, pasted)\n\t\tthis.processPaste(pasted, backend)\n\t}\n\tonInput(event: InputEvent) {\n\t\tif (event.inputType == \"insertReplacementText\") {\n\t\t\tthis.processKey({ key: \"a\", ctrlKey: true }, event.target as HTMLInputElement)\n\t\t\t;[...(event.data ?? \"\")].forEach(c => this.processKey({ key: c }, event.target as HTMLInputElement))\n\t\t} else {\n\t\t\tconst backend = event.target as HTMLInputElement\n\t\t\tlet data = backend.value\n\t\t\tif (data) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.processKey({ key: \"a\", ctrlKey: true }, backend)\n\t\t\t\tdata = this.expiresAutocompleteFix(backend, data)\n\t\t\t\tfor (const letter of data)\n\t\t\t\t\tthis.processKey({ key: letter }, backend)\n\t\t\t}\n\t\t}\n\t}\n\tprivate expiresAutocompleteFix(backend: HTMLInputElement, value: string) {\n\t\tif (backend.attributes.getNamedItem(\"autocomplete\")?.value == \"cc-exp\")\n\t\t\tvalue = value.match(/^20\\d\\d[.\\D]*\\d\\d$/)\n\t\t\t\t? value.substring(value.length - 2, value.length) + value.substring(2, 4)\n\t\t\t\t: value.match(/^(1[3-9]|[2-9]\\d)[.\\D]*\\d\\d$/)\n\t\t\t\t? value.substring(value.length - 2, value.length) + value.substring(0, 2)\n\t\t\t\t: value.match(/^\\d\\d[.\\D]*20\\d\\d$/)\n\t\t\t\t? value.substring(0, 2) + value.substring(value.length - 2, value.length)\n\t\t\t\t: value\n\t\treturn value\n\t}\n\tprivate processPaste(pasted: string, backend: HTMLInputElement) {\n\t\tif (!this.readonly) {\n\t\t\tconst after = tidily.Action.paste(this.formatter, this.state, pasted)\n\t\t\tthis.updateBackend(after, backend)\n\t\t}\n\t}\n\tprivate processKey(event: tidily.Action, backend: HTMLInputElement) {\n\t\tif (!this.readonly) {\n\t\t\tconst after = tidily.Action.apply(this.formatter, this.state, event)\n\t\t\tthis.updateBackend(after, backend)\n\t\t}\n\t}\n\tupdateBackend(\n\t\tafter: Readonly<tidily.State> & Readonly<tidily.Settings>,\n\t\tbackend: HTMLInputElement,\n\t\tsetSelection = true\n\t) {\n\t\tif (after.value != backend.value)\n\t\t\tbackend.value = after.value\n\t\tif (setSelection) {\n\t\t\tif (backend.selectionStart != undefined && after.selection.start != backend.selectionStart)\n\t\t\t\tbackend.selectionStart = after.selection.start\n\t\t\tif (backend.selectionEnd != undefined && after.selection.end != backend.selectionEnd)\n\t\t\t\tbackend.selectionEnd = after.selection.end\n\t\t\tbackend.selectionDirection = after.selection.direction ?? backend.selectionDirection\n\t\t}\n\t\tthis.state = after\n\t\tthis.value = this.lastValue = this.formatter.fromString(\n\t\t\tthis.formatter.unformat(tidily.StateEditor.copy({ ...this.state })).value\n\t\t)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ \"has-value\": this.state?.value != undefined && this.state?.value != \"\" }}\n\t\t\t\tonclick={() => this.inputElement?.focus()}>\n\t\t\t\t<slot name=\"start\"></slot>\n\t\t\t\t<div>\n\t\t\t\t\t<input\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tname={this.name}\n\t\t\t\t\t\ttype={this.state?.type}\n\t\t\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\t\t\trequired={this.required}\n\t\t\t\t\t\tautocomplete={this.autocomplete ? this.state?.autocomplete : \"off\"}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\treadOnly={this.readonly}\n\t\t\t\t\t\tpattern={this.state?.pattern && this.state?.pattern.source}\n\t\t\t\t\t\tvalue={this.state?.value}\n\t\t\t\t\t\tonInput={(e: InputEvent) => this.onInput(e)}\n\t\t\t\t\t\tonFocus={e => this.onFocus(e)}\n\t\t\t\t\t\tonClick={e => this.onClick(e)}\n\t\t\t\t\t\tonBlur={e => this.onBlur(e)}\n\t\t\t\t\t\tonKeyDown={e => this.onKeyDown(e)}\n\t\t\t\t\t\tref={(el: HTMLInputElement) => (this.inputElement = el)}\n\t\t\t\t\t\tonPaste={e => this.onPaste(e)}></input>\n\t\t\t\t\t<label htmlFor={this.name}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</label>\n\t\t\t\t\t<smoothly-icon name=\"alert-circle\" color=\"danger\" fill=\"clear\" size=\"small\"></smoothly-icon>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\"></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n\nfunction getLocale(): isoly.Locale | undefined {\n\tconst result = navigator.language\n\treturn isoly.Locale.is(result) ? result : isoly.Language.is(result) ? isoly.Locale.toLocale(result) : undefined\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-direction: row;\n\tposition: relative;\n\tgap: .5em;\n\tpadding: .6em;\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--background-color));\n}\n\n:host > smoothly-icon {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n:host > input {\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tappearance: none;\n\theight: 1.2em;\n\twidth: 1.2em;\n\tborder: 1px solid black;\n\tdisplay: block;\n}\n\n:host:not([readonly]) > smoothly-icon,\n:host:not([readonly]) > input {\n\tcursor: pointer;\n}\n\n:host[disabled] > input,\n:host[disabled] > smoothly-icon {\n\tborder-color: rgb(var(--smoothly-color-contrast), 0.3);\n\tcolor: rgb(var(--smoothly-color-contrast), 0.4);\n}\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Method, Prop, Watch } from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-checkbox\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputCheckbox implements Input, Clearable, Editable, ComponentWillLoad {\n\tprivate initialValue?: any\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Prop() name: string\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ mutable: true }) checked = false\n\t@Prop() value = this.checked\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.initialValue = this.checked\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\t!this.disabled && !this.readonly && (this.checked = false)\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.checked = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.checked\n\t\tthis.changed = false\n\t}\n\t@Watch(\"checked\")\n\telementCheck(): void {\n\t\tthis.changed = this.initialValue !== this.checked\n\t\tthis.smoothlyInput.emit({ [this.name]: this.checked })\n\t\tthis.listener.changed?.(this)\n\t}\n\tinputHandler() {\n\t\t!this.disabled && !this.readonly && (this.checked = !this.checked)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host onClick={() => this.inputHandler()}>\n\t\t\t\t<input type=\"checkbox\" checked={this.checked} />\n\t\t\t\t{this.checked && <smoothly-icon name=\"checkmark-outline\" size=\"tiny\" />}\n\t\t\t\t<label>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host() {\n\ttransition: 0.6s;\n\tmargin: 0rem;\n\tmin-width: 0rem;\n\tdisplay: flex;\n}\n\n:host([type=\"input\"]) {\n\tline-height: 1;\n}\n\n:host([type=\"form\"]) {\n\tmargin: 1em 0em;\n}\n\n:host([type=\"input\"]) ::slotted(smoothly-icon) {\n\tfilter: opacity(60%);\n\tfont-size: 70%;\n}\n\n:host([type=\"input\"]):hover ::slotted(smoothly-icon) {\n\tcursor: pointer;\n\tfilter: opacity(100%);\n}\n\n:host([type=\"input\"]) > button {\n \tpadding: 0rem;\n \tmargin: 0rem;\n \tmin-width: 0rem; \n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Button } from \"../../Button\"\nimport { SmoothlyForm } from \"../../form\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\n\n@Component({\n\ttag: \"smoothly-input-clear\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputClear {\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill = \"clear\"\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) type: \"form\" | \"input\" = \"input\"\n\tprivate parent?: Clearable | (Clearable & Editable)\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Clearable.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tif (Editable.Element.type.is(parent)) {\n\t\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\t\t\tthis.disabled = p.readonly ? true : p.value ? !p.value : !p.changed\n\t\t\t\t\t\t\tthis.display = p.readonly ? false : p.value ? Boolean(p.value) : p.changed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (p instanceof SmoothlyForm) {\n\t\t\t\t\t\t\tthis.disabled = p.readonly ? true : Object.values(p.value).filter(val => val).length < 1\n\t\t\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.clear()\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Button disabled={this.disabled} type=\"button\">\n\t\t\t\t<slot />\n\t\t\t</Button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n}\n\n:host > smoothly-input { \n\twidth: 100% /* Element doesnt take up all its avaliable space without this*/\n}\n\n:host > div.color-sample {\n\theight: 2em;\n\twidth: 5em;\n\tbackground-color: var(--value);\n\tborder: rgb(var(--text-color, var(--smoothly-color-contrast))) solid 1px;\n\tborder-radius: 2px;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { SmoothlyInputCustomEvent } from \"../../../components\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { SmoothlyInput } from \"../index\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-color\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputColor implements Input, Clearable, ComponentWillLoad {\n\t@Element() element: HTMLElement\n\t@Prop({ mutable: true }) value: string | undefined\n\t@Prop({ mutable: true, reflect: true }) looks: Looks = \"plain\"\n\t@Prop() name: string\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInput) => void>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\tinputHandler(event: SmoothlyInputCustomEvent<Record<string, any>>): void {\n\t\tthis.value = event.detail[this.name]\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--value\": this.value }}>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tvalue={this.value}\n\t\t\t\t\tname={this.name}\n\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\tonSmoothlyInput={event => this.inputHandler(event)}>\n\t\t\t\t\tColor\n\t\t\t\t\t<div slot=\"end\" class=\"color-sample\"></div>\n\t\t\t\t</smoothly-input>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tposition: relative;\n\tmax-width: 100vw;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n:host[looks=transparent] smoothly-input {\n\toutline: none;\n}\n:host > nav {\n\tposition: absolute;\n\tz-index: 10;\n\ttop: 3.5em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tmin-width: 18em;\n}\n:host > div {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\twidth: 100vw;\n\theight: 100vh;\n\tz-index: 2;\n}\n:host > nav > div.arrow {\n\tposition: absolute;\n\tz-index: 9;\n\ttransform: translate(2em, -0.55em) rotate(45deg);\n\twidth: 1em;\n\theight: 1em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n\n@media screen and (min-width: 400px){\n\t:host > nav {\n\t\tposition: absolute;\n\t\tz-index: 10;\n\t\ttop: 3.5em;\n\t\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\t\tmax-width: 22em;\n\t\t\n\t}\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tListen,\n\tMethod,\n\tProp,\n\tWatch,\n} from \"@stencil/core\"\nimport { Date } from \"isoly\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-date\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class InputDate implements ComponentWillLoad, Clearable, Input {\n\t@Element() element: HTMLElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) value?: Date\n\t@Prop({ mutable: true }) open: boolean\n\t@Prop({ mutable: true }) max: Date\n\t@Prop({ mutable: true }) min: Date\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ mutable: true }) disabled: boolean\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyValueChange: EventEmitter<Date>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(_ => {})\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t}\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Watch(\"value\")\n\tonStart(next: Date) {\n\t\tthis.smoothlyValueChange.emit(next)\n\t\tthis.smoothlyInput.emit({ [this.name]: next })\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyDateSet\")\n\tdateSetHandler(event: CustomEvent<Date>) {\n\t\tthis.open = false\n\t\tevent.stopPropagation()\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<smoothly-input\n\t\t\t\tcolor={this.color}\n\t\t\t\tname={this.name}\n\t\t\t\tonFocus={() => (this.open = !this.open)}\n\t\t\t\tonClick={() => (this.open = !this.open)}\n\t\t\t\tdisabled={this.disabled}\n\t\t\t\ttype=\"date\"\n\t\t\t\tvalue={this.value}\n\t\t\t\tlooks={this.looks}\n\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\tonSmoothlyInput={e => (this.value = e.detail[this.name])}>\n\t\t\t\t<slot></slot>\n\t\t\t</smoothly-input>,\n\t\t\tthis.open && !this.disabled\n\t\t\t\t? [\n\t\t\t\t\t\t<div onClick={() => (this.open = false)}></div>,\n\t\t\t\t\t\t<nav>\n\t\t\t\t\t\t\t<div class=\"arrow\"></div>\n\t\t\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\t\t\tdoubleInput={false}\n\t\t\t\t\t\t\t\tvalue={this.value ?? Date.now()}\n\t\t\t\t\t\t\t\tonSmoothlyValueChange={event => {\n\t\t\t\t\t\t\t\t\tthis.value = event.detail\n\t\t\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\t\t\tmin={this.min}>\n\t\t\t\t\t\t\t\t<div slot={\"year-label\"}>\n\t\t\t\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div slot={\"month-label\"}>\n\t\t\t\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</smoothly-calendar>\n\t\t\t\t\t\t</nav>,\n\t\t\t\t ]\n\t\t\t\t: [],\n\t\t]\n\t}\n}\n","@import \"../../shared.css\";\n\n:host {\n\tposition: relative;\n\tdisplay: block;\n\twidth: fit-content;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\n\t&:focus-within smoothly-input {\n\t\toutline: none;\n\t}\n}\n\n:host>nav {\n\tposition: absolute;\n\tz-index: 10;\n\ttop: 3.5em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tmax-width: 22em;\n\tmin-width: 18em;\n}\n\n:host>div {\n\tposition: fixed;\n\ttop: 0px;\n\tleft: 0px;\n\tright: 0px;\n\tbottom: 0px;\n\twidth: 100vw;\n\theight: 100vh;\n\tz-index: 2;\n}\n:host > nav > div.arrow {\n\tposition: absolute;\n\tz-index: 9;\n\ttransform: translate(10em, -0.55em) rotate(45deg);\n\twidth: 1em;\n\theight: 1em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n\n:host>section {\n\tdisplay: flex;\n\tbackground-color: var(--background-color, var(--smoothly-color-shade), transparent);\n\tborder-radius: 0.25rem;\n\tcursor: pointer;\n}\n:host > section > smoothly-input {\n\tborder-radius: var(--border-radius, none);\n\tbackground-color: transparent;\n}\n:host > section > span {\n\tpadding: 0.5em 0.2em 0.5em 0.2em;\n\talign-self: center;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Clearable } from \"../../Clearable\"\nimport { Input } from \"../../Input\"\nimport { Looks } from \"../../Looks\"\nimport { Color, Data } from \"./../../../../model\"\n\n@Component({\n\ttag: \"smoothly-input-date-range\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyInputDateRange implements Clearable, Input {\n\t@Element() element: HTMLElement\n\t@Prop() name: string = \"dateRange\"\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ mutable: true }) start: isoly.Date | undefined = isoly.Date.now()\n\t@Prop({ mutable: true }) end: isoly.Date | undefined = isoly.Date.now()\n\t@Prop() max?: isoly.Date\n\t@Prop() min?: isoly.Date\n\t@State() open: boolean\n\t@Event() smoothlyInput: EventEmitter<{ [name: string]: isoly.DateRange }>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\n\tcomponentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(_ => {})\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t\tthis.start && this.end && this.smoothlyInput.emit({ [this.name]: { start: this.start, end: this.end } })\n\t}\n\t// TODO: disable search fields in month selectors so that the input becomes typeable and then fix input handler\n\tinputHandler(data: Data) {\n\t\tconst split = \"dateRangeInput\" in data && typeof data.dateRangeInput == \"string\" && data.dateRangeInput.split(\" - \")\n\t\tif (split && split.length == 2 && isoly.Date.is(split[0]) && isoly.Date.is(split[1])) {\n\t\t\tthis.start = split[0]\n\t\t\tthis.end = split[1]\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.start = undefined\n\t\tthis.end = undefined\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host tabindex={0}>\n\t\t\t\t<section onClick={() => (this.open = !this.open)}>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"text\" // TODO: date-range tidily thing\n\t\t\t\t\t\tname=\"dateRangeInput\"\n\t\t\t\t\t\tvalue={`${this.start} - ${this.end}`}\n\t\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\tthis.inputHandler(e.detail)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</section>\n\t\t\t\t{this.open && <div onClick={() => (this.open = false)} />}\n\t\t\t\t{this.open && (\n\t\t\t\t\t<nav>\n\t\t\t\t\t\t<div class=\"arrow\" />\n\t\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\t\tdoubleInput={true}\n\t\t\t\t\t\t\tonSmoothlyValueChange={e => e.stopPropagation()}\n\t\t\t\t\t\t\tonSmoothlyStartChange={e => {\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.start = e.detail\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonSmoothlyEndChange={e => {\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.end = e.detail\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonSmoothlyDateSet={e => e.stopPropagation()}\n\t\t\t\t\t\t\tonSmoothlyDateRangeSet={e => {\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t\t\tthis.smoothlyInput.emit({ [this.name]: e.detail })\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvalue={this.start}\n\t\t\t\t\t\t\tstart={this.start}\n\t\t\t\t\t\t\tend={this.end}\n\t\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\t\tmin={this.min}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</nav>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","smoothly-input-demo {\n\tdisplay: block;\n\tmargin: 2em;\n\tmargin-bottom: 20rem;\n}\n.checkbox-group {\n\tdisplay: flex;\n\tgap: 1.5em;\n\talign-items: center;\n\tbackground-color: rgb(var(--background-color));\n}\n.select-div {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tgap: 1em;\n\tflex-wrap: wrap;\n}\n.select-div>* {\n\tflex-basis: 49%;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-input-demo\",\n\tstyleUrl: \"style.css\",\n})\nexport class SmoothlyInputDemo {\n\t@State() duration: isoly.TimeSpan = { hours: 8 }\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>input-date-range outside from</h2>\n\t\t\t\t<smoothly-input-date-range onSmoothlyInput={e => console.log(\"dateRange: \", e)}></smoothly-input-date-range>\n\t\t\t\t<h2>Controlled form</h2>\n\t\t\t\t<smoothly-input-demo-controlled-form />\n\t\t\t\t<h2>Create form defaulting type</h2>\n\t\t\t\t<smoothly-form looks={\"line\"} action={\"https://api.toiletapi.com/6b12fd2f-e896-46f9-b38f-25cf42cee4b4\"}>\n\t\t\t\t\t<smoothly-input type={\"text\"} name={\"name\"}>\n\t\t\t\t\t\tName\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-reset slot={\"reset\"} type={\"form\"} size={\"icon\"} color={\"warning\"} fill={\"default\"} />\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"} size={\"icon\"} color={\"success\"} />\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Select</h2>\n\t\t\t\t<div class=\"select-div\">\n\t\t\t\t\t<smoothly-input-select name=\"select-dessert\" looks=\"border\" onSmoothlyInput={e => console.log(e.detail)}>\n\t\t\t\t\t\t<label slot=\"label\">Select with clear button</label>\n\t\t\t\t\t\t<smoothly-item value=\"1\">Ice cream</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">Sponge cake</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">Cookie</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">Croissant</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">Chocolate fondue</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\tname=\"select-dessert-multiple\"\n\t\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\t\tonSmoothlyInput={e => console.log(e.detail)}>\n\t\t\t\t\t\t<label slot=\"label\">Select multiple with reset button</label>\n\t\t\t\t\t\t<smoothly-item value=\"ice cream\">Ice cream</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"sponge cake\">Sponge cake</smoothly-item>\n\t\t\t\t\t\t<smoothly-item selected value=\"cookie\">\n\t\t\t\t\t\t\tCookie\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"croissant\">Croissant</smoothly-item>\n\t\t\t\t\t\t<smoothly-item selected value=\"chocolate fondue\">\n\t\t\t\t\t\t\tChocolate fondue\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"refresh-outline\" />\n\t\t\t\t\t\t</smoothly-input-reset>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select\n\t\t\t\t\t\tname=\"select-icon\"\n\t\t\t\t\t\tclearable={false}\n\t\t\t\t\t\tshowSelected={false}\n\t\t\t\t\t\tonSmoothlyInput={e => console.log(\"Form Readonly\", e.detail)}>\n\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t</div>\n\n\t\t\t\t<h2>Delayed</h2>\n\t\t\t\t<smoothly-input name=\"Delayed\" delay={2}>\n\t\t\t\t\tDelayed\n\t\t\t\t</smoothly-input>\n\t\t\t\t<h2>Editable form and Input with Clear and Reset - Readonly</h2>\n\t\t\t\t<smoothly-form looks=\"grid\" readonly action=\"https://api.toiletapi.com/6b12fd2f-e896-46f9-b38f-25cf42cee4b4\">\n\t\t\t\t\t<smoothly-input readonly name=\"First Name\" value=\"John\">\n\t\t\t\t\t\tFirst name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"Last name\" value=\"Doe\">\n\t\t\t\t\t\tLast name\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"Phone\" value={\"777888999\"}>\n\t\t\t\t\t\tPhone\n\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"refresh-outline\" />\n\t\t\t\t\t\t</smoothly-input-reset>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<p slot=\"label\">Clearable</p>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"first\"}>\n\t\t\t\t\t\t\tLabel 1\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected slot=\"options\" value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"third\"}>\n\t\t\t\t\t\t\tLabel 3\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-select menuHeight=\"7.5items\" placeholder=\"Select...\" multiple name=\"select-month\">\n\t\t\t\t\t\t<label slot=\"label\">Month</label>\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"select-icon\" clearable={false} showSelected={false}>\n\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox\">Check the box</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox2\" checked>\n\t\t\t\t\t\tCheck the box 2\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range3\" value={20000}>\n\t\t\t\t\t\tSelect\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<smoothly-picker multiple name=\"animals\">\n\t\t\t\t\t\t<span slot=\"label\">Animals</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option selected value={\"cat\"}>\n\t\t\t\t\t\t\tCat\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"dog\"}>Dog</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"fish\"}>Fish</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-file name={\"profile\"} placeholder={\"Click or drag your profile picture here...\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Profile</span>\n\t\t\t\t\t\t<smoothly-icon slot={\"button\"} name={\"person-circle-outline\"} size={\"tiny\"} fill={\"default\"} />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-input-edit fill=\"default\" type=\"button\" color=\"tertiary\" slot=\"edit\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-reset fill=\"default\" type=\"form\" color=\"warning\" slot=\"reset\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit delete slot=\"clear\" color=\"danger\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit fill=\"default\" type=\"button\" color=\"success\" slot=\"submit\" size=\"icon\" shape=\"rounded\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Editable form and Input with Clear and Reset - Editable</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks=\"grid\"\n\t\t\t\t\ttype=\"create\"\n\t\t\t\t\taction=\"https://api.toiletapi.com/upload/6b12fd2f-e896-46f9-b38f-25cf42cee4b4\">\n\t\t\t\t\t<smoothly-input readonly name=\"First Name\" value=\"John\">\n\t\t\t\t\t\tFirst name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"Last name\" value=\"Doe\">\n\t\t\t\t\t\tLast name\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"Phone\" value={\"777888999\"}>\n\t\t\t\t\t\tPhone\n\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"refresh-outline\" />\n\t\t\t\t\t\t</smoothly-input-reset>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<p slot=\"label\">Clearable</p>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"first\"}>\n\t\t\t\t\t\t\tLabel 1\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected slot=\"options\" value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"third\"}>\n\t\t\t\t\t\t\tLabel 3\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-select multiple menuHeight=\"7.5items\" placeholder=\"Select...\" name=\"select-month\">\n\t\t\t\t\t\t<label slot=\"label\">Month multiple select</label>\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"select-icon\" clearable={false} showSelected={false}>\n\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox\">Check the box</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox2\" checked>\n\t\t\t\t\t\tCheck the box 2\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range3\" value={20000}>\n\t\t\t\t\t\tSelect\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<smoothly-picker multiple name=\"animals\">\n\t\t\t\t\t\t<span slot=\"label\">Animals</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option selected value={\"cat\"}>\n\t\t\t\t\t\t\tCat\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"dog\"}>Dog</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"fish\"}>Fish</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-edit fill=\"default\" type=\"button\" color=\"tertiary\" slot=\"edit\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-reset fill=\"default\" type=\"form\" color=\"warning\" slot=\"reset\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit delete slot=\"clear\" color=\"danger\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit fill=\"default\" type=\"button\" color=\"success\" slot=\"submit\" size=\"icon\" shape=\"rounded\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Color</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input-color name=\"color\"></smoothly-input-color>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Range</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range\" outputSide=\"right\">\n\t\t\t\t\t\tSelect and so\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range2\">\n\t\t\t\t\t\tSelect with really really long label\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range3\">\n\t\t\t\t\t\tSelect\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Duration</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"duration\"\n\t\t\t\t\t\ttype=\"duration\"\n\t\t\t\t\t\tplaceholder=\"hh:mm\"\n\t\t\t\t\t\tvalue={this.duration}\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\tconst duration = e.detail.duration\n\t\t\t\t\t\t\tconsole.log(\"event duration\", duration)\n\t\t\t\t\t\t\tthis.duration = duration\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tDuration\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"duration\"\n\t\t\t\t\t\ttype=\"duration\"\n\t\t\t\t\t\tvalue={this.duration}\n\t\t\t\t\t\tplaceholder=\"-hh:mm\"\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\tconst duration = e.detail.duration\n\t\t\t\t\t\t\tconsole.log(\"event duration\", duration)\n\t\t\t\t\t\t\tthis.duration = duration\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tDuration\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Transparent inputs</h2>\n\t\t\t\t<smoothly-form looks={\"transparent\"}>\n\t\t\t\t\t<smoothly-input-file name={\"file\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>File</span>\n\t\t\t\t\t\t<smoothly-icon slot={\"button\"} name={\"folder-open-outline\"} size={\"small\"} />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-input type={\"duration\"} looks={\"transparent\"} placeholder={\"h:mm\"}>\n\t\t\t\t\t\tInput\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-picker>\n\t\t\t\t\t\t<span slot={\"label\"}>Picker</span>\n\t\t\t\t\t\t<span slot={\"search\"}>Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"circle\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"ellipse-outline\"} />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"square\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"square-outline\"} />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-date>Date</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date-range>Date Range</smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-select name={\"transport\"}>\n\t\t\t\t\t\t<smoothly-item value={\"plane\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"airplane-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"car\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"car-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"bus\"} selected>\n\t\t\t\t\t\t\t<smoothly-icon name={\"bus-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t</smoothly-form>\n\n\t\t\t\t<h2>Submit</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"email\" name=\"email\">\n\t\t\t\t\t\tEmail\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"password\" name=\"password\">\n\t\t\t\t\t\tPassword\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-clear fill=\"default\" type=\"form\" color=\"danger\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Prices</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"no\">\n\t\t\t\t\t\tNo currency\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"crowns\" currency=\"SEK\">\n\t\t\t\t\t\tSEK\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"usDollar\" currency=\"USD\">\n\t\t\t\t\t\tUSD\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"pounds\" currency=\"GBP\">\n\t\t\t\t\t\tGBP\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"peso\" currency=\"UYW\">\n\t\t\t\t\t\tUYW\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"iceland\" currency=\"ISK\">\n\t\t\t\t\t\tISK\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"Palladium\" currency=\"XPD\">\n\t\t\t\t\t\t{\"XPD (Palladium)\"}\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-clear fill=\"default\" type=\"form\" color=\"danger\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\n\t\t\t\t<h4>Clear</h4>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input name=\"First Name\" value=\"John\">\n\t\t\t\t\t\tFirst name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"Last name\" value=\"Doe\">\n\t\t\t\t\t\tLast name\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"Phone\">\n\t\t\t\t\t\tPhone\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-clear fill=\"default\" type=\"form\" color=\"danger\" slot=\"submit\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Identifier</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"identifier-code\">Code</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-attribute\">Attribute</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-snake\">Snake</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-pascal\">Pascal</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-camel\">Camel</smoothly-input>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Border</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"email\" name=\"email\">\n\t\t\t\t\t\tEmail\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"password\" name=\"password\">\n\t\t\t\t\t\tPassword\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" onSubmit={(e: Event) => alert(e)} color=\"success\" fill=\"solid\">\n\t\t\t\t\t\tSend\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Grid</h2>\n\t\t\t\t<h4>Contact</h4>\n\t\t\t\t<smoothly-form looks=\"grid\" action=\"https://webhook.site/85bb78f6-b450-4a74-81ac-d7cac6e94bbe\">\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\">\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\">\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"street\" value=\"Torgny Segerstedts Allé 87\">\n\t\t\t\t\t\tStreet\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"postal-code\" name=\"zip\">\n\t\t\t\t\t\tZipCode\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"city\">\n\t\t\t\t\t\tCity\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"countryCode\">\n\t\t\t\t\t\tCountryCode\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"phone\">\n\t\t\t\t\t\tPhone\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"email\" name=\"email\">\n\t\t\t\t\t\tEmail\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" color=\"success\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tSubmit\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Card</h4>\n\t\t\t\t<smoothly-form looks=\"grid\" onSmoothlyFormSubmit={(e: CustomEvent) => alert(JSON.stringify(e.detail))}>\n\t\t\t\t\t<smoothly-input type=\"card-number\" name=\"card\">\n\t\t\t\t\t\tCard #\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit size=\"icon\" slot=\"submit\" color=\"success\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\"></smoothly-icon>\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t\t<smoothly-input type=\"card-expires\" name=\"expires\">\n\t\t\t\t\t\tExpires\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"card-csc\" name=\"csc\">\n\t\t\t\t\t\tCVV/CVC\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\">\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\">\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Contact</h4>\n\t\t\t\t<smoothly-form looks=\"grid\">\n\t\t\t\t\t<smoothly-input type=\"email\" name=\"email\">\n\t\t\t\t\t\tEmail\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"password\" name=\"password\">\n\t\t\t\t\t\tPassword\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" currency=\"SEK\" name=\"price\">\n\t\t\t\t\t\tPrice\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"percent\" name=\"percent\">\n\t\t\t\t\t\tPercent\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" color=\"success\" fill=\"solid\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\"></smoothly-icon>\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Random</h4>\n\t\t\t\t<smoothly-form looks=\"grid\">\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\treadonly={true}\n\t\t\t\t\t\tvalue={\"Readonly\"}\n\t\t\t\t\t\tonSmoothlyBlur={() => console.log(\"smoothly blur\")}\n\t\t\t\t\t\tstyle={{ width: \"100%\" }}>\n\t\t\t\t\t\tReadonly\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"testing\">\n\t\t\t\t\t\tTextTest\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"date-time\" name=\"date-time\">\n\t\t\t\t\t\tDate-Time\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"divisor\" name=\"divisor\">\n\t\t\t\t\t\tDivisor\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"date\" name=\"date\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-date name=\"some-date\">Calendar</smoothly-input-date>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Line</h2>\n\t\t\t\t<smoothly-form looks=\"line\" action=\"https://api.toiletapi.com/upload/6b12fd2f-e896-46f9-b38f-25cf42cee4b4\">\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" fill=\"solid\" onSubmit={(e: Event) => alert(e)} color=\"success\">\n\t\t\t\t\t\tSend\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Input Alternatives</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"name.first\"\n\t\t\t\t\t\tplaceholder=\"Smith\"\n\t\t\t\t\t\tonSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input placeholder=\"test\"></smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" fill=\"solid\" onSubmit={(e: Event) => alert(e)} color=\"success\">\n\t\t\t\t\t\tSend\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Smoothly checkboxes</h4>\n\t\t\t\t<smoothly-form>\n\t\t\t\t\t<div class=\"checkbox-group\">\n\t\t\t\t\t\t<smoothly-input-checkbox disabled name=\"first-checkbox\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" size=\"tiny\" />\n\t\t\t\t\t\t\tFirst\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"second-checkbox\" checked>\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" size=\"tiny\" />\n\t\t\t\t\t\t\tsecond\n\t\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"third-checkbox\">3rd</smoothly-input-checkbox>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Smoothly Radio Buttons</h4>\n\t\t\t\t<smoothly-form onSmoothlyFormSubmit={e => console.log(e.detail)} looks=\"border\">\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t\t<p slot=\"label\">Clearable</p>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"first\"}>\n\t\t\t\t\t\t\tLabel 1\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected slot=\"options\" value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"third\"}>\n\t\t\t\t\t\t\tLabel 3\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-radio name=\"radioSecondInput\">\n\t\t\t\t\t\t<p slot=\"label\">Not clearable</p>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"first\"}>\n\t\t\t\t\t\t\tLabel 1\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"third\"}>\n\t\t\t\t\t\t\tLabel 3\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"fourth\"}>\n\t\t\t\t\t\t\tLabel 4\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"fifth\"}>\n\t\t\t\t\t\t\tLabel 5\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"sixth\"}>\n\t\t\t\t\t\t\tLabel 6\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Smoothly Picker</h4>\n\t\t\t\t<smoothly-picker-demo />\n\t\t\t\t<smoothly-back-to-top />\n\t\t\t\t<h4>Smoothly Date</h4>\n\t\t\t\t<smoothly-input-date>Date</smoothly-input-date>\n\t\t\t\t<smoothly-input-date showLabel={false} value=\"2021-10-28\" max=\"2021-12-30\" min=\"2021-10-10\">\n\t\t\t\t\tDate\n\t\t\t\t</smoothly-input-date>\n\t\t\t\t<smoothly-form looks=\"grid\" onSmoothlyFormSubmit={e => console.log(e.detail)}>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname=\"testing\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\t\tmax=\"2024-12-30\"></smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-clear type=\"form\" color=\"danger\" fill=\"solid\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">submit daterange</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\n\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\tlooks=\"grid\"\n\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\tmax=\"2025-12-30\"\n\t\t\t\t\tshowLabel={false}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\"--border-radius\": \"4px\",\n\t\t\t\t\t\t\"--padding\": \"0 0.75em\",\n\t\t\t\t\t\t\"--input-width\": \"12ch\",\n\t\t\t\t\t}}></smoothly-input-date-range>\n\n\t\t\t\t<smoothly-form looks=\"grid\" onSmoothlyFormSubmit={e => console.log(\"Submitted\", e.detail)}>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"text\">\n\t\t\t\t\t\tText\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-input-file placeholder=\"Select or drag a file here\" name=\"file\">\n\t\t\t\t\t\t\t<span slot=\"label\">Testing file input</span>\n\t\t\t\t\t\t\t<smoothly-icon slot=\"button\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t</div>\n\t\t\t\t\t<smoothly-input-file camera=\"back\" placeholder=\"Capture a photo\" name=\"image\">\n\t\t\t\t\t\t<span slot=\"label\">Testing camera photo</span>\n\t\t\t\t\t\t<smoothly-icon slot=\"button\" name=\"camera-outline\" />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-input-clear type=\"form\" color=\"danger\" fill=\"solid\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<br />\n\t\t\t\t<smoothly-form looks=\"line\" onSmoothlyFormSubmit={e => console.log(\"form input\", e.detail)}>\n\t\t\t\t\t<smoothly-input name=\"text\">Input</smoothly-input>\n\t\t\t\t\t<smoothly-input-file camera=\"back\" placeholder=\"Capture a photo\" name=\"image\">\n\t\t\t\t\t\t<span slot=\"label\">Testing camera photo</span>\n\t\t\t\t\t\t<smoothly-icon slot=\"button\" name=\"camera-outline\" />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-picker name=\"picker\">\n\t\t\t\t\t\t<span slot=\"label\">Shape</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"circle\"}>\n\t\t\t\t\t\t\t<span slot=\"label\">Circle</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"ellipse-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"cube\"}>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Cube</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cube-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"square\"} selected>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Square</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"square-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-select name=\"select\" placeholder=\"Select...\" menuHeight=\"7.5items\">\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname=\"date-range\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\t\tmax=\"2025-12-30\"\n\t\t\t\t\t\tshowLabel={false}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\"--border-radius\": \"4px\",\n\t\t\t\t\t\t\t\"--padding\": \"0 0.75em\",\n\t\t\t\t\t\t\t\"--input-width\": \"12ch\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-input-date name=\"date\" value=\"2021-10-28\" max=\"2021-12-30\" min=\"2021-10-10\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" color=\"success\" fill=\"solid\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" fill=\"solid\" size=\"medium\" />\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Form with spinner showcase</h4>\n\t\t\t\t<smoothly-form looks=\"line\" onSmoothlyFormSubmit={e => console.log(\"form input\", e.detail)}>\n\t\t\t\t\t<smoothly-input name=\"text\">Input</smoothly-input>\n\t\t\t\t\t<smoothly-input-file camera=\"back\" placeholder=\"Capture a photo\" name=\"image\">\n\t\t\t\t\t\t<span slot=\"label\">Testing camera photo</span>\n\t\t\t\t\t\t<smoothly-icon slot=\"button\" name=\"camera-outline\" />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-picker name=\"picker\">\n\t\t\t\t\t\t<span slot=\"label\">Shape</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"circle\"}>\n\t\t\t\t\t\t\t<span slot=\"label\">Circle</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"ellipse-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"cube\"}>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Cube</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cube-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"square\"} selected>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Square</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"square-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-select name=\"select\" placeholder=\"Select...\">\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname=\"date-range\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\t\tmax=\"2025-12-30\"\n\t\t\t\t\t\tshowLabel={false}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\"--border-radius\": \"4px\",\n\t\t\t\t\t\t\t\"--padding\": \"0 0.75em\",\n\t\t\t\t\t\t\t\"--input-width\": \"12ch\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-input-date name=\"date\" value=\"2021-10-28\" max=\"2021-12-30\" min=\"2021-10-10\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" color=\"success\" fill=\"solid\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" fill=\"solid\" size=\"medium\" />\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\twidth: 100%;\n}\n:host smoothly-form {\n\twidth: 100%;\n}\n","import { Component, h, Host, State, VNode, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { SmoothlyFormCustomEvent } from \"../../../../components\"\nimport { Data } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-input-demo-controlled-form\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDemoControlledForm {\n\t@State() name = \"Initial name\"\n\t@State() currency: isoly.Currency = \"EUR\"\n\t@State() date: isoly.Date = isoly.Date.now()\n\tprivate currencies: isoly.Currency[] = [\"GBP\", \"SEK\", \"EUR\", \"USD\"]\n\n\t@Watch(\"name\")\n\tnameChanged(current: string, previous: string): void {\n\t\tconsole.log(`updated name from '${previous}' to '${current}'`)\n\t}\n\n\tasync submitHandler(\n\t\tevent: SmoothlyFormCustomEvent<{ result: (result: boolean) => void; value: Data }>\n\t): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tconsole.log(\"Received event. Processing...\", event.detail)\n\t\tif (!(typeof event.detail.value.name == \"string\")) {\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\t} else if (!(typeof event.detail.value.date == \"string\"))\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\telse if (!isoly.Currency.is(event.detail.value.currency))\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\telse {\n\t\t\tawait new Promise(resolve => window.setTimeout(resolve, 1_000))\n\t\t\tthis.name = event.detail.value.name\n\t\t\tthis.date = event.detail.value.date\n\t\t\tthis.currency = event.detail.value.currency\n\t\t\tconsole.log(\"Finished processing successfully. Resolving true.\")\n\t\t\tevent.detail.result(true)\n\t\t}\n\t\tevent.detail.result(false)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-form readonly looks={\"grid\"} onSmoothlyFormSubmit={e => this.submitHandler(e)}>\n\t\t\t\t\t<smoothly-input type={\"text\"} name={\"name\"} value={this.name}>\n\t\t\t\t\t\tName\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-select name={\"currency\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Currency</span>\n\t\t\t\t\t\t{this.currencies.map(currency => (\n\t\t\t\t\t\t\t<smoothly-item selected={currency == this.currency} value={currency}>\n\t\t\t\t\t\t\t\t{currency}\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input>Dummy</smoothly-input>\n\t\t\t\t\t<smoothly-input-month name={\"date\"} value={this.date} next previous>\n\t\t\t\t\t\t<span slot={\"year-label\"}>Year</span>\n\t\t\t\t\t\t<span slot={\"month-label\"}>Month</span>\n\t\t\t\t\t</smoothly-input-month>\n\t\t\t\t\t<smoothly-input-edit slot={\"edit\"} type={\"button\"} size={\"icon\"} color={\"primary\"} fill={\"default\"} />\n\t\t\t\t\t<smoothly-input-reset slot={\"reset\"} type={\"form\"} size={\"icon\"} color={\"warning\"} fill={\"default\"} />\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"} size={\"icon\"} color={\"success\"} />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host([editable]){\n\topacity: 0.5;\n}\n\n:host smoothly-icon.default {\n\ttransform: translate(.1em, -.1em);\n}\n\n:host::slotted(button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Listen, Prop, VNode } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Button } from \"../../Button\"\nimport { Editable } from \"../Editable\"\n\n@Component({\n\ttag: \"smoothly-input-edit\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputEdit implements ComponentWillLoad {\n\tprivate parent?: Editable\n\t@Prop({ reflect: true }) color?: Color = \"tertiary\"\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop() toolTip = \"Edit\"\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Editable.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tthis.display = p.readonly\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.edit(true)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host title={this.toolTip}>\n\t\t\t\t<Button disabled={this.disabled} type=\"button\">\n\t\t\t\t\t<smoothly-icon class=\"default\" name=\"create-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t</Button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\toverflow: hidden;\n\tposition: relative;\n\twidth: 100%;\n\tpadding-left: 0.4rem;\n\tbackground-color: rgb(var(--background-color,var(--smoothly-color-shade)));\n}\n:host > div > div.mask {\n\tposition: absolute;\n\tinset: 0;\n\tbackground-color: rgb(var(--text-color ,var(--smoothly-color-contrast)), 0.3);\n}\n\n:host:not(.dragging) > div > div.mask {\n\tdisplay: none;\n}\n:host > div > input {\n\toverflow: hidden;\n\theight: 0;\n\twidth: 0;\n\tpadding: 0;\n}\n:host > div.input {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-bottom: 0.2rem;\n\tcolumn-gap: 1ch;\n}\n:host > div > smoothly-button {\n\tmargin: 0;\n\tborder: none;\n}\n:host > label {\n\tpadding-top: 0.4rem;\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: baseline;\n\tjustify-content: flex-start;\n\tcolor: rgb(var(--text-color, var(--smoothly-color-contrast)));\n\tcursor: inherit;\n\n}\n:host > label::slotted(*) {\n\tdisplay: block;\n\twidth: 100%;\n\tfont-size: 0.65em;\n\topacity: 0.8;\n}\n:host:not([show-label]) label {\n\tdisplay: none;\n}\n:host > div > span {\n\tcursor: pointer;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-file\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputFile implements ComponentWillLoad, Input, Clearable, Editable {\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() accept?: string\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) camera: \"front\" | \"back\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ mutable: true }) value?: File\n\t@Prop({ mutable: true, reflect: true }) placeholder: string | undefined\n\t@State() dragging = false\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> }\n\tprivate transfer: DataTransfer = new DataTransfer()\n\tprivate input?: HTMLInputElement\n\tprivate initialValue: SmoothlyInputFile[\"value\"]\n\n\tprivate get files(): FileList {\n\t\tthis.transfer.items.clear()\n\t\tthis.value && this.transfer.items.add(this.value)\n\t\treturn this.transfer.files\n\t}\n\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(() => {})\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t}\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.value = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.value\n\t\tthis.valueChanged()\n\t}\n\t@Method()\n\tasync binary(): Promise<boolean> {\n\t\treturn true\n\t}\n\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.changed = this.initialValue !== this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\n\tinputHandler(event: Event): void {\n\t\tevent.stopPropagation()\n\t\tif (this.input?.files?.length)\n\t\t\tthis.value = this.input?.files[0]\n\t}\n\tdropHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tthis.dragging = false\n\t\tif (event.dataTransfer?.files.length)\n\t\t\tthis.value = event.dataTransfer.files[0]\n\t}\n\tclickHandler(event: MouseEvent): void {\n\t\tif (!this.readonly && !event.composedPath().find(target => target == this.input)) {\n\t\t\tthis.input?.click()\n\t\t}\n\t}\n\tdragOverHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t}\n\tdragEnterHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\t!this.readonly && (this.dragging = true)\n\t}\n\tdragLeaveHandler(event: DragEvent): void {\n\t\tevent.stopPropagation()\n\t\tthis.dragging = false\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ dragging: this.dragging }}\n\t\t\t\ttabindex={0}\n\t\t\t\tonClick={(e: MouseEvent) => this.clickHandler(e)}\n\t\t\t\tonDragOver={(e: DragEvent) => this.dragOverHandler(e)}\n\t\t\t\tonDragEnter={(e: DragEvent) => this.dragEnterHandler(e)}>\n\t\t\t\t<label>\n\t\t\t\t\t<slot name={\"label\"} />\n\t\t\t\t</label>\n\t\t\t\t<div class=\"input\">\n\t\t\t\t\t<smoothly-button color={this.color} fill={\"clear\"} size=\"flexible\">\n\t\t\t\t\t\t<slot name={\"button\"} />\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<span>{this.value?.name ?? this.placeholder}</span>\n\t\t\t\t\t<div class={\"mask\"} onDrop={e => this.dropHandler(e)} onDragLeave={e => this.dragLeaveHandler(e)} />\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={element => (this.input = element)}\n\t\t\t\t\t\ttype={\"file\"}\n\t\t\t\t\t\tcapture={this.camera == \"back\" ? \"environment\" : \"user\"}\n\t\t\t\t\t\taccept={this.accept ?? (!this.camera ? undefined : \"image/jpeg\")}\n\t\t\t\t\t\tfiles={this.files}\n\t\t\t\t\t\tonInput={e => this.inputHandler(e)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n}\n\n:host>smoothly-input-select:last-of-type {\n\tdisplay: flex;\n\twidth: 100%;\n}\n\n:host[looks=line],\n:host[looks=border],\n:host[looks=transparent] {\n\tgap: 2em;\n}\n\n:host:not([previous])>smoothly-button:first-of-type,\n:host:not([next])>smoothly-button:last-of-type {\n\tdisplay: none;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Data } from \"../../../model\"\nimport { Color } from \"../../../model\"\nimport * as generate from \"../../calendar/generate\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-month\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputMonth implements ComponentWillLoad, Input, Editable {\n\tchanged: boolean\n\t@Element() element: HTMLSmoothlyInputMonthElement\n\t@Prop({ reflect: true, mutable: true }) readonly: boolean\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks\n\t@Prop() name: string\n\t@Prop({ mutable: true }) value?: isoly.Date = isoly.Date.now()\n\t@Prop({ reflect: true }) next = false\n\t@Prop({ reflect: true }) previous = false\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\tprivate year?: HTMLSmoothlyInputSelectElement\n\tprivate month?: HTMLSmoothlyInputSelectElement\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyInputLoad.emit(() => {})\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\tprivate adjustMonth(delta: number): void {\n\t\tif (!this.readonly) {\n\t\t\tconst date = isoly.Date.parse(this.value ?? isoly.Date.now())\n\t\t\tdate.setMonth(date.getMonth() + delta)\n\t\t\tthis.value = isoly.Date.create(date)\n\t\t}\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.year?.clear()\n\t\tthis.month?.clear()\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.year?.reset()\n\t\tthis.month?.reset()\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.year?.setInitialValue()\n\t\tthis.month?.setInitialValue()\n\t}\n\tinputHandler(event: CustomEvent<Record<string, any>>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tconst year = event.detail[`${this.name}-year`]\n\t\t\tconst month = event.detail[`${this.name}-month`]\n\t\t\tif (month && isoly.Date.is(month))\n\t\t\t\tthis.value = isoly.Date.firstOfMonth(month)\n\t\t\telse if (year && isoly.Date.is(year))\n\t\t\t\tthis.value = isoly.Date.firstOfMonth(year)\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks, color: Color | undefined) => void>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this.looks, this.color)\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: unknown) => void>): Promise<void> {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tsize={\"flexible\"}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tdisabled={this.readonly}\n\t\t\t\t\tonClick={() => this.adjustMonth(-1)}>\n\t\t\t\t\t<smoothly-icon name={\"caret-back-outline\"} size={\"tiny\"} color={this.color} fill={\"default\"} />\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tref={e => (this.year = e)}\n\t\t\t\t\tname={`${this.name}-year`}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tchanged={this.changed}\n\t\t\t\t\tmenuHeight=\"5.5items\"\n\t\t\t\t\trequired\n\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\tsearchDisabled>\n\t\t\t\t\t<div slot={\"label\"}>\n\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{generate.years(this.value ?? isoly.Date.now()).map(year => (\n\t\t\t\t\t\t<smoothly-item key={year.date} value={year.date} selected={year.selected || this.value == year.date}>\n\t\t\t\t\t\t\t{year.name}\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-select>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tref={e => (this.month = e)}\n\t\t\t\t\tname={`${this.name}-month`}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\tchanged={this.changed}\n\t\t\t\t\tmenuHeight=\"5.5items\"\n\t\t\t\t\trequired\n\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\tsearchDisabled>\n\t\t\t\t\t<div slot={\"label\"}>\n\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{generate.months(this.value ?? isoly.Date.now()).map(month => (\n\t\t\t\t\t\t<smoothly-item key={month.date} value={month.date} selected={month.selected || this.value == month.date}>\n\t\t\t\t\t\t\t{month.name}\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-select>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tsize={\"flexible\"}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tdisabled={this.readonly}\n\t\t\t\t\tonClick={() => this.adjustMonth(1)}>\n\t\t\t\t\t<smoothly-icon name={\"caret-forward-outline\"} size={\"tiny\"} color={this.color} fill={\"default\"} />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tpadding: .4em; \n\tbackground-color: rgb(var(--background-color,var(--smoothly-color-shade)));\n\tdisplay: flex;\n\talign-items: center;\n}\n\n:host > div.input-group {\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tgap: 1em\n}\n\n:host > div.input-group > div {\n\talign-items: center;\n\tdisplay: flex;\n\tjustify-content: right;\n\twidth: 100%;\n\tflex-wrap: wrap;\n\tgap: 1em;\n}\n\n:host > div.input-group::slotted(p) {\n\tmargin: 0 0 0 0.2em;\n\twhite-space: nowrap;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\nimport { Selectable } from \"./Selected\"\n\n@Component({\n\ttag: \"smoothly-input-radio\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRadio implements Input, Clearable, Editable, ComponentWillLoad {\n\tprivate active?: Selectable\n\tprivate valueReceivedOnLoad = false\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tinitialValue?: Selectable\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ mutable: true }) value: any = undefined\n\t@Prop({ mutable: true, reflect: true }) looks: Looks = \"plain\"\n\t@Prop() clearable?: boolean\n\t@Prop({ mutable: true, reflect: true }) readonly = false\n\t@Prop() name: string\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidLoad(): void | Promise<void> {\n\t\t!this.valueReceivedOnLoad && this.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\tthis.initialValue = this.active\n\t}\n\t@Listen(\"smoothlyRadioButtonRegister\")\n\thandleRegister(event: CustomEvent<(name: string) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.name)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tSmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputRadio) => void>): void {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name === this.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Listen(\"smoothlySelect\")\n\tsmoothlyRadioInputHandler(event: CustomEvent<Selectable>): void {\n\t\tevent.stopPropagation()\n\t\tif (!this.readonly || !this.valueReceivedOnLoad) {\n\t\t\tif (this.clearable && this.active?.value === event.detail.value)\n\t\t\t\tthis.clear()\n\t\t\telse if (this.active?.value !== event.detail.value) {\n\t\t\t\tthis.active?.select(false)\n\t\t\t\tthis.active = event.detail\n\t\t\t\tthis.value = this.active.value\n\t\t\t\tthis.active.select(true)\n\t\t\t}\n\t\t}\n\t\t!this.valueReceivedOnLoad && (this.valueReceivedOnLoad = !this.valueReceivedOnLoad)\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tif (this.clearable) {\n\t\t\tthis.active?.select(false)\n\t\t\tthis.active = undefined\n\t\t\tthis.value = undefined\n\t\t}\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.active?.select(false)\n\t\tthis.active = this.initialValue\n\t\tthis.value = this.initialValue?.value\n\t\tthis.active?.select(true)\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.active\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.valueReceivedOnLoad && (this.changed = this.initialValue?.value !== this.value)\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.listener.changed?.(this)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<slot />\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<slot name=\"label\" />\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name=\"options\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\talign-items: center;\n\tposition: relative;\n}\n\n:host:hover > * {\n\tcursor: pointer;\n}\n\n:host > input:focus-visible + smoothly-icon {\n\toutline: 2px solid rgb(var(--smoothly-primary-color));\t\n\tborder-radius: 1px;\n}\n\n:host > input {\n\topacity: 0;\n\tz-index: 1;\n\twidth: 1.5em;\n\theight: 1.5em;\n\tposition: absolute;\n\ttransform: translateX(50%);\n}\n\n:host > label {\n\tpadding: 0 .3em;\n\twhite-space: nowrap;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\nimport { Looks } from \"../../Looks\"\nimport { Selectable } from \"../Selected\"\n\n@Component({\n\ttag: \"smoothly-input-radio-item\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRadioItem {\n\t@Element() element: HTMLInputElement\n\t@Prop({ mutable: true }) value: any\n\t@Prop({ mutable: true }) selected = false\n\t@Prop({ mutable: true, reflect: true }) looks: Looks = \"plain\"\n\t@Prop({ mutable: true }) name: string\n\t@Event() smoothlySelect: EventEmitter<Selectable>\n\t@Event() smoothlyRadioButtonRegister: EventEmitter<(name: string) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyRadioButtonRegister.emit(name => (this.name = name))\n\t\tthis.selected && this.inputHandler()\n\t}\n\tinputHandler(): void {\n\t\tthis.smoothlySelect.emit({ value: this.value, selected: this.selected, select: s => (this.selected = s) })\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host onClick={() => this.inputHandler()}>\n\t\t\t\t<input name={this.name} type=\"radio\" checked={this.selected} />\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={this.selected ? \"checkmark-circle\" : \"ellipse-outline\"}\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\tfill=\"outline\"\n\t\t\t\t\tcolor={this.selected ? \"success\" : \"medium\"}\n\t\t\t\t\ttoolTip=\"Select\"\n\t\t\t\t/>\n\t\t\t\t<label>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n* {\n\tbox-sizing: border-box;\n}\n\n:host {\n\tposition: relative;\n\twidth: 100%;\n\tjustify-content: center;\n\talign-items: center;\n\tdisplay: flex;\n\tbackground-color: rgb(var(--background-color,var(--smoothly-color-shade)));\n\tpadding: 0 .4em;\n}\n\n:host :nth-child(2) {\n margin-left: 0.2em;\n}\n\n:host > div {\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 100%;\n\tpadding: 1.1em 0 .1em 0;\n}\n\n:host.output-side-right > div {\n\tpadding: 0;\n}\n\n:host > div > output {\n\tmin-width: 4em;\n\ttext-align: center;\n\tmargin-left: .5em\n}\n\n:host > div > label {\n\tposition: absolute;\n\tdisplay: block;\n\twhite-space: nowrap;\n\ttext-align: center;\n\ttop: .5em;\n\tleft: 0;\n\tfont-size: .6em;\n}\n\n:host.output-side-right > dov > label {\n\tposition: static;\n\tfont-size: inherit;\n\ttext-align: left;\n\tpadding-right: .5em\n} \n\n:host.output-side-right > dov > output {\n\torder: 3;\n\tmargin: 0;\n} \n\n/*--------------------Reset browserspecific CSS------------------ */\n:host > div > input[type=range] {\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\n width: 100%; /* Specific width is required for Firefox. */\n background: transparent; /* Otherwise white in Chrome */\n\theight: 1.5em;\n\tpadding: 0 .4em;\n}\n\n/*--------------------THUMB------------------ */\n/* WebKit/Blink */\n:host > div > input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n height: 1.2em;\n width: .7em;\n border-radius: 20%;\n background-color: rgb(var(--smoothly-primary-contrast));\n\tborder: 1px rgb(var(--text-color, var(--smoothly-color-contrast))) solid;\n cursor: pointer;\n margin-top: -.45em; /* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */\n}\n\n/* Firefox */\n:host > div > input[type=range]::-moz-range-thumb {\n height: 1.2em;\n width: .7em;\n border-radius: 20%;\n background-color: rgb(var(--smoothly-primary-contrast));\n\tborder: 1px rgb(var(--text-color, var(--smoothly-color-contrast))) solid;\n cursor: pointer;\n}\n\n/*--------------------SLIDER TRACK------------------ */\n:host > div > input[type=range]::-webkit-slider-runnable-track {\n height: .3em;\n cursor: pointer;\n\tbackground-color: rgb(var(--smoothly-primary-color));\n border-radius: 20px;\n}\n\n:host > div > input[type=range]::-moz-range-track {\n width: 100%;\n height: .3em;\n cursor: pointer;\n background-color: rgb(var(--smoothly-primary-color));\n border-radius: 20px;\n}\n\n:host(:not([value])) > div > input[type=range]::-webkit-slider-runnable-track {\n\tbackground-color: rgb(var(--smoothly-primary-tint));\n}\n\n:host(:not([value])) > dov > input[type=range]::-moz-range-track {\n\tbackground-color: rgb(var(--smoothly-primary-tint));\n}\n\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Method, Prop, VNode, Watch } from \"@stencil/core\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-range\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRange implements Input, Clearable, Editable, ComponentWillLoad {\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Prop({ mutable: true }) value: number | undefined = undefined\n\tprivate initialValue = this.value\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() min = 0\n\t@Prop() max = 100000\n\t@Prop() name: string\n\t@Prop() labelText?: string\n\t@Prop() step: number | \"any\" = \"any\"\n\t@Prop() outputSide: \"right\" | \"left\" = \"left\"\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.value = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.value\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.changed = this.initialValue !== this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.listener.changed?.(this)\n\t}\n\tinputHandler(event: Event): void {\n\t\tevent.target instanceof HTMLInputElement &&\n\t\t\t(this.value =\n\t\t\t\tthis.step !== \"any\" ? event.target.valueAsNumber : Math.round(event.target.valueAsNumber * 100) / 100)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host class={{ \"output-side-right\": this.outputSide === \"right\" }}>\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<div>\n\t\t\t\t\t<label htmlFor={this.name}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</label>\n\t\t\t\t\t<output htmlFor={this.name}>{this.value ?? \"—\"}</output>\n\t\t\t\t\t<input\n\t\t\t\t\t\tname={this.name}\n\t\t\t\t\t\tpart=\"range\"\n\t\t\t\t\t\ttype=\"range\"\n\t\t\t\t\t\tmin={this.min}\n\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\tstep={this.step}\n\t\t\t\t\t\tdisabled={this.readonly}\n\t\t\t\t\t\tonInput={event => this.inputHandler(event)}\n\t\t\t\t\t\tvalue={this.value ?? this.min}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host() {\n\ttransition: 0.6s;\n\tmin-width: 0rem;\n}\n\n:host([type=\"input\"]) {\n\tline-height: 1;\n}\n\n:host([type=\"input\"]) ::slotted(smoothly-icon) {\n\tfilter: opacity(60%);\n\tfont-size: 70%;\n}\n\n:host([type=\"input\"]):hover ::slotted(smoothly-icon) {\n\tcursor: pointer;\n\tfilter: opacity(100%);\n}\n\n:host([type=\"input\"]) > button {\n \tmin-width: 0rem; \n}\n:host smoothly-icon.default {\n\ttransform: translateY(-.1em) scaleX(-1) ;\n}\n:host::slotted(button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Button } from \"../../Button\"\nimport { SmoothlyForm } from \"../../form\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\n\n@Component({\n\ttag: \"smoothly-input-reset\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputReset {\n\treadonlyAtLoad: boolean\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill = \"clear\"\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) type: \"form\" | \"input\" = \"input\"\n\t@Prop() tooltip = \"Reset\"\n\tprivate parent?: Editable.Element\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Editable.Element.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tthis.readonlyAtLoad = parent.readonly\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\t\tthis.display = p.readonly ? false : p.changed\n\t\t\t\t\t}\n\t\t\t\t\tif (p instanceof SmoothlyForm) {\n\t\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\t\tthis.disabled = !this.readonlyAtLoad && !p.changed\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler(event: MouseEvent) {\n\t\tevent.stopPropagation()\n\t\tthis.parent?.reset()\n\t\tthis.parent instanceof SmoothlyForm && this.readonlyAtLoad && this.parent?.edit(false)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host title={this.tooltip}>\n\t\t\t\t<Button disabled={this.disabled} type=\"button\">\n\t\t\t\t\t<smoothly-icon class=\"default\" name=\"refresh-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t</Button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { isly } from \"isly\"\n\nexport interface Item extends Item.Element {}\n\nexport namespace Item {\n\texport interface Element {\n\t\tvalue: any\n\t\tselected?: boolean\n\t\tdeselectable: boolean\n\t\tfilter: (filter: string) => Promise<void>\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tvalue: isly.any(),\n\t\t\tdeselectable: isly.boolean(),\n\t\t\tselected: isly.boolean().optional(),\n\t\t\tfilter: isly.function(),\n\t\t})\n\t\texport const is = type.is\n\t}\n\texport const type = Element.type.extend<Item>({})\n\texport const is = type.is\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: row;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-color-shade));\n}\n\n:host.icon {\n\twidth: fit-content;\n\tflex-direction: column;\n}\n\n:host>div.select-display {\n\tbox-sizing: border-box;\n\tmin-height: 2.7em;\n\tdisplay: flex;\n\tcursor: default;\n\tpadding: .7em;\n\toverflow: hidden;\n\twidth: 100%;\n\twhite-space: nowrap;\n\tgap: 1em;\n\ttext-overflow: ellipsis;\n}\n\n:host>div.icons {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-right: .4em;\n}\n\n:host>div.icons::slotted(smoothly-input-reset) {\n\tpadding-right: .2em;\n}\n\n:host::slotted([slot=label]) {\n\tposition: absolute;\n\tleft: 0.4em;\n\ttop: 0.6em;\n\topacity: 0.8;\n\ttransform-origin: top left;\n\ttransition: transform 100ms ease;\n}\n\n:host.has-value::slotted([slot=label]),\n:host:not(.has-value)[placeholder]::slotted([slot=label]) {\n\ttop: 0.4em;\n\ttransform: scale(0.6);\n}\n\n:host.has-value:has([slot=label])>div.select-display,\n:host:not(.has-value)[placeholder]>div.select-display {\n\tpadding-bottom: .1em;\n\tpadding-left: .8em;\n\tpadding-top: 1.1em;\n\toverflow: hidden;\n\twidth: 100%;\n}\n\n:host>.options {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: absolute;\n\ttop: var(--element-height);\n\tz-index: 10;\n\tmax-height: var(--menu-height, unset);\n\twidth: 100%;\n\toverflow-y: auto;\n\tbackground-color: rgb(var(--smoothly-default-shade));\n}\n\n:host[looks=border]>div.options {\n\ttransform: translateX(-1px);\n\tborder: rgb(var(--text-color, var(--smoothly-color-contrast))) solid 1px;\n\tborder-top: rgba(var(--text-color, var(--smoothly-color-contrast)), .4) solid 1px;\n}\n\n:host[looks=\"grid\"]>div.options {\n\ttransform: translateX(-2px);\n\tborder: rgba(var(--text-color, var(--smoothly-color-contrast)), .5) solid 2px;\n\tborder-top: rgba(var(--text-color, var(--smoothly-color-contrast)), .2) solid 2px;\n}\n\n:host>div.options::slotted(smoothly-item) {\n\tpadding: .7em;\n}\n\n:host>div.options::slotted(smoothly-item:not([selectable])) {\n\tdisplay: flex;\n\tgap: 1em;\n\tbackground-color: rgba(var(--smoothly-primary-tint), .5);\n\tcolor: var(--smoothly-color-contrast)\n}\n\n:host>div.options>smoothly-item:not([selectable])>smoothly-icon[name=\"backspace-outline\"] {\n\tmargin-left: auto;\n\tmargin-right: 0;\n}\n\n:host>div.options.hidden {\n\tdisplay: none;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Item } from \"../../item/Item\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n@Component({\n\ttag: \"smoothly-input-select\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputSelect implements Input, Editable, Clearable, ComponentWillLoad {\n\tprivate initialValue: HTMLSmoothlyItemElement[] = []\n\tprivate initialValueHandled = false\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tprivate displaySelectedElement?: HTMLElement\n\tprivate iconsDiv?: HTMLElement\n\tprivate toggle?: HTMLElement\n\tprivate items: HTMLSmoothlyItemElement[] = []\n\tprivate itemHeight: number | undefined\n\t@Element() element: HTMLSmoothlyInputSelectElement\n\t@Prop() name = \"selected\"\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true, mutable: true }) showSelected?: boolean = true\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() multiple = false\n\t@Prop() clearable = true\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true }) placeholder?: string | any\n\t@Prop() menuHeight?: `${number}${\"items\" | \"rem\" | \"px\" | \"vh\"}`\n\t@Prop() required = false\n\t@Prop() searchDisabled = false\n\t@State() open = false\n\t@State() selected: HTMLSmoothlyItemElement[] = []\n\t@State() filter = \"\"\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyItemSelect: EventEmitter<HTMLSmoothlyItemElement>\n\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidLoad(): void | Promise<void> {\n\t\tthis.selected && !this.initialValueHandled && (this.initialValue = [...this.selected])\n\t\tthis.initialValueHandled = true\n\t\tthis.onSelectedChange()\n\t}\n\tcomponentDidRender(): void | Promise<void> {\n\t\tthis.itemHeight === undefined && (this.itemHeight = this.items.find(item => item.clientHeight > 0)?.clientHeight)\n\t\tif (this.menuHeight && this.itemHeight) {\n\t\t\tthis.element?.style.setProperty(\n\t\t\t\t\"--menu-height\",\n\t\t\t\t!this.menuHeight.endsWith(\"items\") || this.items.length == 0\n\t\t\t\t\t? this.menuHeight\n\t\t\t\t\t: `${this.itemHeight * +(this.menuHeight.match(/^(\\d+(\\.\\d+)?|\\.\\d+)/g)?.[0] ?? \"10\")}px`\n\t\t\t)\n\t\t}\n\t\tthis.element?.style.setProperty(\"--element-height\", `${this.element.clientHeight}px`)\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.selected.forEach(item => (item.selected = item.hidden = false))\n\t\tthis.initialValue.forEach(item => (item.selected = true))\n\t\tthis.selected = [...this.initialValue]\n\t\tthis.displaySelected()\n\t\tthis.changed = false\n\t\tthis.open && this.handleShowOptions()\n\t}\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tif (this.clearable) {\n\t\t\tthis.selected.forEach(item => (item.selected = item.hidden = false))\n\t\t\tthis.selected = []\n\t\t\tif (this.displaySelectedElement) {\n\t\t\t\tthis.displaySelectedElement.innerHTML = this.placeholder ?? \"\"\n\t\t\t}\n\t\t}\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.changed = false\n\t\tthis.initialValue = [...this.selected]\n\t}\n\t@Watch(\"selected\")\n\tonSelectedChange() {\n\t\tthis.initialValueHandled && (this.changed = !this.areValuesEqual(this.selected, this.initialValue))\n\t\tconst value =\n\t\t\t!this.multiple && this.selected[0]\n\t\t\t\t? this.selected[0].value\n\t\t\t\t: this.multiple && this.selected.length > 0\n\t\t\t\t? this.selected.map(item => item.value)\n\t\t\t\t: undefined\n\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Watch(\"required\")\n\tonRequiredChange(): void {\n\t\tthis.items.forEach(item => (item.deselectable = !this.required))\n\t}\n\t@Watch(\"filter\")\n\tasync onFilterChange(value: string): Promise<void> {\n\t\tvalue = value.toLowerCase()\n\t\tawait Promise.all(this.items.map(item => item.filter(value)))\n\t}\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputSelect) => void>): Promise<void> {\n\t\tif (\n\t\t\tevent.target &&\n\t\t\t((\"name\" in event.target && event.target.name !== this.name) ||\n\t\t\t\t(event.composedPath().some(e => e == this.iconsDiv) && !event.composedPath().some(e => e == this.toggle)))\n\t\t) {\n\t\t\tevent.stopPropagation()\n\t\t} else if (Item.Element.is(event.target)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.target.deselectable = !this.required\n\t\t\tthis.items.push(event.target as HTMLSmoothlyItemElement)\n\t\t}\n\t\tevent.detail(this)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && this.handleShowOptions()\n\t}\n\t@Listen(\"smoothlyItemSelect\")\n\tonItemSelect(event: CustomEvent<HTMLSmoothlyItemElement>): void {\n\t\tevent.stopPropagation()\n\t\tif (this.multiple) {\n\t\t\tthis.selected = event.detail.selected\n\t\t\t\t? [...this.selected, event.detail]\n\t\t\t\t: this.selected.filter(item => item.selected)\n\t\t} else {\n\t\t\tthis.selected[0] && (this.selected[0].hidden = this.selected[0].selected = false)\n\t\t\tthis.selected = !event.detail.selected ? [] : [event.detail]\n\t\t\t!this.showSelected && event.detail.selected && (event.detail.hidden = true)\n\t\t}\n\t\tthis.displaySelected()\n\t\tthis.element.focus()\n\t}\n\t@Watch(\"open\")\n\tonClosed(): void {\n\t\tif (!this.open) {\n\t\t\tconst marked = this.items.find(item => item.marked)\n\t\t\tif (marked)\n\t\t\t\tmarked.marked = false\n\t\t}\n\t}\n\thandleShowOptions(event?: Event): void {\n\t\tevent && event.stopPropagation()\n\t\tconst wasButtonClicked =\n\t\t\tevent?.composedPath().some(e => e == this.iconsDiv) && !event.composedPath().some(e => e == this.toggle)\n\n\t\t!this.readonly &&\n\t\t\t!(event?.target && this.items.includes(event.target as HTMLSmoothlyItemElement) && this.multiple) &&\n\t\t\t!wasButtonClicked &&\n\t\t\t(this.open = !this.open)\n\t\tthis.filter = \"\"\n\t}\n\tareValuesEqual(selected: HTMLSmoothlyItemElement[], initialValue: HTMLSmoothlyItemElement[]): boolean {\n\t\treturn selected.length === initialValue.length && initialValue.every(value => selected.includes(value))\n\t}\n\tdisplaySelected(): void {\n\t\tconst displayString: string = \"<div>\" + this.selected.map(option => option.innerHTML).join(\"</div><div>\") + \"</div>\"\n\t\tthis.displaySelectedElement &&\n\t\t\t(this.displaySelectedElement.innerHTML =\n\t\t\t\tthis.selected.length > 0 ? displayString : this.placeholder ? this.placeholder : \"\")\n\t}\n\t@Listen(\"keydown\")\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (!this.searchDisabled) {\n\t\t\tevent.stopPropagation()\n\t\t\tconst visibleItems = this.items.some(item => item.getAttribute(\"hidden\") === null)\n\t\t\tif (event.key != \"Tab\" && !event.ctrlKey && !event.metaKey)\n\t\t\t\tevent.preventDefault()\n\t\t\tif (this.open) {\n\t\t\t\tswitch (event.key) {\n\t\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\t\tvisibleItems && this.move(-1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\t\tvisibleItems && this.move(1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Escape\":\n\t\t\t\t\t\tif (this.filter == \"\")\n\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Backspace\":\n\t\t\t\t\t\tthis.filter = this.filter.slice(0, -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Enter\":\n\t\t\t\t\t\tconst result = this.items.find(item => item.marked)\n\t\t\t\t\t\tif (result?.value)\n\t\t\t\t\t\t\tresult.selected = !result.selected\n\t\t\t\t\t\tthis.smoothlyItemSelect.emit(result)\n\t\t\t\t\t\tif (!this.multiple) {\n\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Tab\":\n\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (event.key.length == 1)\n\t\t\t\t\t\t\tthis.filter += event.key\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (event.key) {\n\t\t\t\t\tcase \"Enter\":\n\t\t\t\t\tcase \" \":\n\t\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\t\tthis.move(0)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\t\tthis.move(-1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Tab\":\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\t\tif (event.key.length == 1)\n\t\t\t\t\t\t\tthis.filter += event.key\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tprivate move(direction: -1 | 0 | 1): void {\n\t\tlet markedIndex = this.items.findIndex(item => item.marked)\n\t\tif (markedIndex == -1)\n\t\t\tmarkedIndex = this.items.findIndex(item => item.selected)\n\t\tif (this.items[markedIndex])\n\t\t\tthis.items[markedIndex].marked = false\n\t\tif (markedIndex == -1)\n\t\t\tmarkedIndex = 0\n\t\tdo {\n\t\t\tmarkedIndex = (markedIndex + direction + this.items.length) % this.items.length\n\t\t} while (this.items[markedIndex].hidden)\n\t\tthis.items[markedIndex].marked = true\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\ttabIndex={0}\n\t\t\t\tclass={{ \"has-value\": this.selected.length !== 0 }}\n\t\t\t\tonClick={(event: Event) => this.handleShowOptions(event)}>\n\t\t\t\t<div class=\"select-display\" ref={element => (this.displaySelectedElement = element)}>\n\t\t\t\t\t{this.placeholder}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"icons\" ref={element => (this.iconsDiv = element)}>\n\t\t\t\t\t<slot name=\"end\" />\n\t\t\t\t\t{this.looks == \"border\" && (\n\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\tref={element => (this.toggle = element)}\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tname={this.open ? \"caret-down-outline\" : \"caret-forward-outline\"}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"label\" />\n\t\t\t\t<div class={`${this.open ? \"\" : \"hidden\"} options`}>\n\t\t\t\t\t{this.filter.length > 0 && (\n\t\t\t\t\t\t<smoothly-item selectable={false}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"search-outline\" size=\"small\" />\n\t\t\t\t\t\t\t{this.filter}\n\t\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\t\tname=\"backspace-outline\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tonClick={e => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\t\t\t\t\tthis.element.focus()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t)}\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","export interface Submittable {\n\tsubmit(remove?: boolean): Promise<void>\n}\nexport namespace Submittable {\n\texport function is(value: Submittable | any): value is Submittable {\n\t\treturn value && typeof value == \"object\" && typeof value.submit == \"function\"\n\t}\n}\n",":host {\n\tdisplay: flex;\n}\n:host(:not([display])) {\n\tdisplay: none;\n}\n:host::slotted(smoothly-button button > * > * + smoothly-icon),\n:host::slotted(smoothly-button-confirm button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Editable } from \"../Editable\"\nimport { Submittable } from \"../Submittable\"\n\n@Component({\n\ttag: \"smoothly-input-submit\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputSubmit implements ComponentWillLoad {\n\tprivate parent?: Submittable & Editable\n\t@Prop({ reflect: true }) delete = false\n\t@Prop() color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true, mutable: true }) display = false\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop() toolTip = this.delete ? \"Remove\" : \"Submit\"\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Submittable.is(parent) && Editable.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\tthis.disabled =\n\t\t\t\t\t\t!this.delete &&\n\t\t\t\t\t\t(p.readonly ? true : Object.values(p.value).filter(val => val).length < 1 ? true : !p.changed)\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\tclickHandler() {\n\t\t!this.disabled && this.parent?.submit(this.delete)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host title={this.toolTip}>\n\t\t\t\t{this.delete == true ? (\n\t\t\t\t\t<smoothly-button-confirm\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tsize={this.size}\n\t\t\t\t\t\tshape={this.shape}\n\t\t\t\t\t\texpand={this.expand}\n\t\t\t\t\t\ttype={this.type}\n\t\t\t\t\t\tcolor={this.color ?? \"danger\"}\n\t\t\t\t\t\tfill={this.fill}\n\t\t\t\t\t\tonSmoothlyConfirm={() => this.clickHandler()}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t<smoothly-icon name=\"trash-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t) : (\n\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tsize={this.size}\n\t\t\t\t\t\ttype={this.type}\n\t\t\t\t\t\tshape={this.shape}\n\t\t\t\t\t\texpand={this.expand}\n\t\t\t\t\t\tcolor={this.color ?? \"success\"}\n\t\t\t\t\t\tfill={this.fill}\n\t\t\t\t\t\tonClick={() => this.clickHandler()}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host([selected]) {\n\tbackground-color: rgb(var(--smoothly-primary-shade));\n\tcolor: rgb(var(--smoothly-primary-contrast));\n}\n:host {\n\tpadding: 0.5em;\n\tcursor: pointer;\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tborder: rgb(var(--smoothly-default-shade) solid 1px);\n}\n:host([marked]),\n:host:hover {\n\tbackground-color: rgba(var(--smoothly-primary-tint));\n\tcolor: rgb(var(--smoothly-primary-contrast));\n}\n","import {\n\tComponent,\n\tComponentDidLoad,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Item } from \"./Item\"\n\n@Component({\n\ttag: \"smoothly-item\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyItem implements Item, ComponentWillLoad, ComponentDidLoad {\n\t@Element() element: HTMLSmoothlyItemElement\n\t@Prop() value: any\n\t@Prop({ reflect: true, mutable: true }) selected: boolean\n\t@Prop({ reflect: true, mutable: true }) marked: boolean\n\t@Prop({ reflect: true }) selectable = true\n\t@Prop() deselectable = true\n\t@Event() smoothlyItemSelect: EventEmitter<HTMLSmoothlyItemElement>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\n\t@Listen(\"click\")\n\tclickHandler(): void {\n\t\tif (this.selectable && (!this.selected || this.deselectable))\n\t\t\tthis.selected = !this.selected\n\t}\n\t@Watch(\"selected\")\n\tselectedWatcher(): void {\n\t\tthis.smoothlyItemSelect.emit(this.element)\n\t}\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t}\n\tcomponentDidLoad(): void {\n\t\tif (this.selected && this.selectable)\n\t\t\tthis.smoothlyItemSelect.emit(this.element)\n\t}\n\t@Method()\n\tasync filter(filter: string): Promise<void> {\n\t\tconst value = typeof this.value === \"string\" ? this.value : JSON.stringify(this.value ?? \"\")\n\t\tthis.element.hidden =\n\t\t\tfilter && this.selectable\n\t\t\t\t? !(value.includes(filter) || this.element.innerText.toLowerCase().includes(filter))\n\t\t\t\t: false\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host tabIndex={-1}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tposition: relative;\n\twidth: max-content;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 0.15em 0.6em;\n\tborder-radius: 2em;\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tbackground-color: hsl(var(--hue), 85%, 70%);\n}\n\n:host([shape=rectangle]) {\n\tborder-radius: 0.3em;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-label\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyLabel {\n\t@Prop() hue: number\n\t@Prop() description: string\n\t@Prop({ reflect: true }) shape: \"rectangle\" | \"rounded\"\n\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\ttitle={this.description}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--hue\": this.hue.toString(),\n\t\t\t\t}}>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, FunctionalComponent, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-lazy\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyLazy {\n\t@Prop({ mutable: true }) show = false\n\t@Prop() content?: VNode | FunctionalComponent\n\n\tloadMoreHandler(event: CustomEvent<string>): void {\n\t\tevent.stopPropagation()\n\t\tthis.show = true\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot name=\"before\" />\n\t\t\t\t<smoothly-load-more onSmoothlyLoadMore={e => this.loadMoreHandler(e)} />\n\t\t\t\t{this.show && (typeof this.content == \"function\" ? <this.content /> : this.content)}\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tposition: relative;\n\ttop: var(--offset,)\n}\n","import { Component, ComponentWillLoad, Element, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-load-more\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class LoadMore implements ComponentWillLoad {\n\t@Element() element: HTMLSmoothlyLoadMoreElement\n\t@Prop() offset = \"0\"\n\t@Prop() name = \"\"\n\t@Prop() multiple = false\n\t@Event() smoothlyLoadMore: EventEmitter<string>\n\n\tcomponentWillLoad(): void {\n\t\tconst observer = new IntersectionObserver((entries, observer) => this.observationHandler(observer, entries))\n\t\tobserver.observe(this.element)\n\t}\n\n\tobservationHandler(observer: IntersectionObserver, entries: IntersectionObserverEntry[]): void {\n\t\tif (entries.find(entry => entry.target == this.element)?.intersectionRatio ?? 0) {\n\t\t\tthis.smoothlyLoadMore.emit(this.name)\n\t\t\t!this.multiple && (observer.unobserve(this.element), observer.disconnect())\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn <Host style={{ \"--offset\": `${this.offset}` }} />\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgap: 5rem;\n\tbox-sizing: border-box;\n\tmax-width: 80rem;\n\twidth: 100%;\n\tmargin: auto;\n\tpadding: 2rem;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemo {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-demo-group />\n\t\t\t\t<smoothly-next-demo-colspan />\n\t\t\t\t<smoothly-next-demo-simple />\n\t\t\t\t<smoothly-next-demo-nested />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host smoothly-display {\n\tdisplay: inline;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo-colspan\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoColspan {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-table columns={3}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Date</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Skip</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Total</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell span={2}>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-01\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={120} currency={\"EUR\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell span={2}>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\tcontent={<smoothly-display type={\"date-time\"} value={\"2024-01-02T13:37:00.000Z\"} />}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={220} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={120} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t\t{\" + \"}\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={100} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Not Skipped</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={320} currency={\"EUR\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, Fragment, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo-group\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoGroup {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-table columns={2}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Date</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Total</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-row-group align>\n\t\t\t\t\t\t<smoothly-display slot={\"start\"} type=\"date\" value={\"2024-01-01\"} />\n\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={510} />\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-01T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={250} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-01T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-01T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={260} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-01T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={130} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-03\"} />\n\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-03T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-03T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-03T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-03T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-04\"} />\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-04T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-04T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-04T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-04T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-05T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-05T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-05T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-05T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-06\"} />\n\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","export const data = [\n\t{\n\t\tid: \"667d329f9f4934ecdc4bf9eb\",\n\t\tbalance: 1450.03,\n\t\tage: 35,\n\t\teyeColor: \"blue\",\n\t\tname: \"Glenda Ballard\",\n\t\tgender: \"female\",\n\t\tcompany: \"ZENTIA\",\n\t\tregistered: \"2022-06-13T12:39:15.908\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Manning Hunter\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 1922.25,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Mcmillan Oliver\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 2440.53,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Graham Garza\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3712.59,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Gabrielle Neal\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 2519.25,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Dotson Duncan\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3274.11,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4e07097167ef92a2\",\n\t\tbalance: 2488.91,\n\t\tage: 21,\n\t\teyeColor: \"blue\",\n\t\tname: \"Delaney Haley\",\n\t\tgender: \"male\",\n\t\tcompany: \"COMTOURS\",\n\t\tregistered: \"2018-05-11T08:58:36.197\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Elsa Cochran\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 2009.45,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Willis Acevedo\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 2198.01,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Slater Fowler\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 2888.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Ashley Wilkerson\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1863.65,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Ola Lynch\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3649.29,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f14a0aeea0d70d5e7\",\n\t\tbalance: 1660.91,\n\t\tage: 36,\n\t\teyeColor: \"brown\",\n\t\tname: \"Riddle Reilly\",\n\t\tgender: \"male\",\n\t\tcompany: \"OPTIQUE\",\n\t\tregistered: \"2016-09-15T09:46:07.962\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Hazel Steele\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3129.64,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Golden Chapman\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 2491,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Solomon Lopez\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1382.71,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Castro Booth\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1991.6,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Hernandez Bartlett\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2842.85,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Lindsay Wagner\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3636.6,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f953aaaba19bea98b\",\n\t\tbalance: 1381.34,\n\t\tage: 24,\n\t\teyeColor: \"brown\",\n\t\tname: \"Diana Burns\",\n\t\tgender: \"female\",\n\t\tcompany: \"CODACT\",\n\t\tregistered: \"2023-06-02T09:07:46.478\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Tamika Merritt\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2401.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Ballard Buckner\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1986.13,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Stokes Ramirez\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 3521.75,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Wood Aguirre\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1186.13,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Sophia Bowen\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2750.95,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Wilkinson Gordon\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3864.91,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6a753976e21e23b5\",\n\t\tbalance: 3054.74,\n\t\tage: 22,\n\t\teyeColor: \"brown\",\n\t\tname: \"Jackson Burnett\",\n\t\tgender: \"male\",\n\t\tcompany: \"COMCUR\",\n\t\tregistered: \"2019-06-05T09:17:31.312\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Atkinson Alston\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 1025.72,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Delia Ford\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3061.87,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Marylou Hanson\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3255.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Kelly Ray\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 3671.73,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Valdez Weeks\",\n\t\t\t\tage: 38,\n\t\t\t\tbalance: 3911.29,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Hayes Crawford\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3194.97,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329fc4805cafac37861e\",\n\t\tbalance: 1173.94,\n\t\tage: 20,\n\t\teyeColor: \"green\",\n\t\tname: \"Stephenson Mcleod\",\n\t\tgender: \"male\",\n\t\tcompany: \"POLARAX\",\n\t\tregistered: \"2015-12-10T07:36:10.267\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Kristine Newton\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2713.9,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Craft Patel\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 3822.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Cochran French\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 1535.91,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Bowen Vinson\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2787.01,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Adrian Ewing\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2319.14,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Jimmie Mathews\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2869.09,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Dixon Daugherty\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1496.25,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f76318162fe27b208\",\n\t\tbalance: 2977.01,\n\t\tage: 24,\n\t\teyeColor: \"blue\",\n\t\tname: \"Claudette Christensen\",\n\t\tgender: \"female\",\n\t\tcompany: \"PIVITOL\",\n\t\tregistered: \"2021-08-08T07:08:00.936\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Parker Lamb\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3409.27,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Kennedy Bryan\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3904.27,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Johanna Barton\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3613.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Vazquez Melendez\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3692.31,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Mendoza Wooten\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2175.64,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Kelli Hicks\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1326.46,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Jill Sanchez\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3214.36,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329ff80a953b7f0a73d2\",\n\t\tbalance: 1993.09,\n\t\tage: 20,\n\t\teyeColor: \"green\",\n\t\tname: \"Buckley Gutierrez\",\n\t\tgender: \"male\",\n\t\tcompany: \"HOUSEDOWN\",\n\t\tregistered: \"2015-04-02T04:53:42.985\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Leanne Pennington\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 3111.48,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Juarez Hoover\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2000.62,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Navarro Mccormick\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 3083.93,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Berry Curry\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3181.41,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Josefa Howard\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 3744.56,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4f53eb59f0512361\",\n\t\tbalance: 2374.56,\n\t\tage: 34,\n\t\teyeColor: \"brown\",\n\t\tname: \"Sallie Mccoy\",\n\t\tgender: \"female\",\n\t\tcompany: \"REALYSIS\",\n\t\tregistered: \"2018-05-11T05:26:36.604\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Martina Kirby\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1278.07,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Macias Lyons\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2991.44,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Alta Chaney\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1032.71,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"White Manning\",\n\t\t\t\tage: 39,\n\t\t\t\tbalance: 3103.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Mason Rosa\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1384.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Meghan Martin\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 1982.09,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f8a6cf9319bfdbd30\",\n\t\tbalance: 3220.94,\n\t\tage: 23,\n\t\teyeColor: \"blue\",\n\t\tname: \"Huff Hull\",\n\t\tgender: \"male\",\n\t\tcompany: \"GADTRON\",\n\t\tregistered: \"2023-02-14T01:58:56.938\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Rochelle Maldonado\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 1548.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Diann Conrad\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 1721.33,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Hope Jarvis\",\n\t\t\t\tage: 38,\n\t\t\t\tbalance: 1265.24,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Dixie Huffman\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3764.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Erickson Porter\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 2958.59,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Christensen Thomas\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1233.2,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f1415ecb1efb216cc\",\n\t\tbalance: 2907.83,\n\t\tage: 26,\n\t\teyeColor: \"brown\",\n\t\tname: \"Hancock Eaton\",\n\t\tgender: \"male\",\n\t\tcompany: \"POLARIUM\",\n\t\tregistered: \"2018-02-25T01:03:11.860\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Flynn Gilmore\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 2582.57,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Kline Hickman\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3853.99,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Hatfield Owens\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 2016.57,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Michael Carson\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1293.03,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Strickland Lowery\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1367.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Georgia Chavez\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 2957.48,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Alma Berry\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2357.01,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f722eb89c82b56dec\",\n\t\tbalance: 1602.02,\n\t\tage: 35,\n\t\teyeColor: \"brown\",\n\t\tname: \"Lorrie Mcpherson\",\n\t\tgender: \"female\",\n\t\tcompany: \"PYRAMIA\",\n\t\tregistered: \"2018-12-07T05:18:34.223\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Bridgett Everett\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 1438.53,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Carlene Farley\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 1410.54,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Phoebe Mendez\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1979.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Louella Cox\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3430.55,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Velez Pugh\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 3436.5,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329ff853efe8c4e0a454\",\n\t\tbalance: 2654.19,\n\t\tage: 36,\n\t\teyeColor: \"brown\",\n\t\tname: \"Luann Jennings\",\n\t\tgender: \"female\",\n\t\tcompany: \"NAXDIS\",\n\t\tregistered: \"2014-02-18T04:25:50.302\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Walton Gentry\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1328.43,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Lucy Koch\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2134.54,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Toni Meyers\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2572.29,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Vicki Frost\",\n\t\t\t\tage: 39,\n\t\t\t\tbalance: 3299.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Meadows Baker\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2323.75,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f84f3bfbfcc763674\",\n\t\tbalance: 2528.48,\n\t\tage: 28,\n\t\teyeColor: \"brown\",\n\t\tname: \"Michelle Carey\",\n\t\tgender: \"female\",\n\t\tcompany: \"IDEGO\",\n\t\tregistered: \"2016-10-01T04:25:07.187\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Roman Sanders\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 3551.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Amanda Herman\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 3928.02,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Kay Montgomery\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3241.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Valentine Wilder\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1413.31,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Brigitte Nixon\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 3113.39,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4359ec766055a765\",\n\t\tbalance: 3732.65,\n\t\tage: 30,\n\t\teyeColor: \"brown\",\n\t\tname: \"Beach Maddox\",\n\t\tgender: \"male\",\n\t\tcompany: \"GEEKETRON\",\n\t\tregistered: \"2021-03-24T11:55:31.135\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Candy Gibbs\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2602.28,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Alissa Rosario\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1958.84,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Imelda Harmon\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3817.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Addie Serrano\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 3154.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Jordan Shields\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3566.08,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f9ef3817d307e2583\",\n\t\tbalance: 2151.52,\n\t\tage: 32,\n\t\teyeColor: \"brown\",\n\t\tname: \"Whitney Hood\",\n\t\tgender: \"male\",\n\t\tcompany: \"EVENTAGE\",\n\t\tregistered: \"2021-06-17T12:11:56.473\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Noel Walsh\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2790.49,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Barlow Rodriquez\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 1664.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Nash Keith\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2285.17,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Chavez Webster\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3381.55,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Herminia Chen\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1064.96,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Susana Glass\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 2749.35,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f9bd581700cac2dbc\",\n\t\tbalance: 2209.77,\n\t\tage: 40,\n\t\teyeColor: \"blue\",\n\t\tname: \"Tasha Mosley\",\n\t\tgender: \"female\",\n\t\tcompany: \"QUIZKA\",\n\t\tregistered: \"2014-05-11T11:44:55.071\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Larsen Wall\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1523.28,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Holmes Hopkins\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 1112.68,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Giles Espinoza\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2550.95,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Aimee Rosales\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2195.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Karin Little\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 2896.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Angelita Mcfadden\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 1051.15,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6e2dbb2002be4b9e\",\n\t\tbalance: 3298.23,\n\t\tage: 31,\n\t\teyeColor: \"brown\",\n\t\tname: \"Schneider Walker\",\n\t\tgender: \"male\",\n\t\tcompany: \"BLEENDOT\",\n\t\tregistered: \"2020-02-11T08:57:29.025\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Helena William\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 2579.69,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Silva Ware\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 2683.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Enid Oconnor\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1816.46,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Knowles Goff\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1675.75,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Carolina Greer\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3337.27,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f8c548510c5d4f5ce\",\n\t\tbalance: 2823.51,\n\t\tage: 35,\n\t\teyeColor: \"green\",\n\t\tname: \"Mayo Shepard\",\n\t\tgender: \"male\",\n\t\tcompany: \"KIOSK\",\n\t\tregistered: \"2024-02-24T12:45:57.463\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Olga Hester\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 3878.21,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Rogers Sampson\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2669.62,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Myra Johnson\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 3489.32,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Mcfadden Phillips\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2758.8,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Park Moody\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3519.08,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6574ada6f090fd54\",\n\t\tbalance: 2631.69,\n\t\tage: 40,\n\t\teyeColor: \"blue\",\n\t\tname: \"Avis Carlson\",\n\t\tgender: \"female\",\n\t\tcompany: \"LINGOAGE\",\n\t\tregistered: \"2016-08-08T08:59:54.752\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Mcdonald Dyer\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2262.39,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Irene Baldwin\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 1291.1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Rollins Anderson\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1437.04,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Juliana Larson\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3492.22,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Michele Gardner\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2003.15,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Vang Cardenas\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1855.52,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Puckett Hubbard\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1659.92,\n\t\t\t},\n\t\t],\n\t},\n]\n",":host {\n\tdisplay: block;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\nimport { data } from \"./data\"\n\n@Component({\n\ttag: \"smoothly-next-demo-nested\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoNested {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-table columns={8}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Id</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Registered</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Name</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Age</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Balance</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>EyeColor</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Gender</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Company</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t{data.map(entry => (\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<div slot={\"detail\"}>\n\t\t\t\t\t\t\t\t\t<smoothly-next-demo-nested-inner data={entry.friends} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.id}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.registered}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.name}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.age}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.balance}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.eyeColor}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.gender}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.company}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t\t<smoothly-next-table-foot>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Footer Cell</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Footer Cell</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-foot>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tmargin: 1em auto;\n\twidth: 60%;\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo-nested-inner\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoNestedInner {\n\t@Prop() data?: {\n\t\tid: number\n\t\tname: string\n\t\tage: number\n\t\tbalance: number\n\t}[]\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-table columns={4}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Id</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Name</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Age</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Balance</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t{this.data?.map(entry => (\n\t\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.id}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.name}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.age}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.balance}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo-simple\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoSimple {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-table columns={2}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Breed</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Coat</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t{cats.map(cat => (\n\t\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.breed}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t\t\tCountry:\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t{cat.country}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.coat}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Pattern: {cat.pattern}</div>\n\t\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<div slot={\"detail\"}>\n\t\t\t\t\t\t\t\tContent\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\tof\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\tthe\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\texpandable\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\trow\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Cell1 in expandable row</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Cell2 in expandable row</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Cell5</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\tExpandable Cell\n\t\t\t\t\t\t\t\t<div slot={\"detail\"}>Content of the expandable cell</div>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\tExpandable Cell 1<div slot={\"detail\"}>Content of the expandable cell 1</div>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\tExpandable Cell 2<div slot={\"detail\"}>Content of the expandable cell 2</div>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t\t<smoothly-next-table-foot>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Footer Cell</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Footer Cell</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-foot>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\nexport interface Cat {\n\tbreed: string\n\tcountry: string\n\torigin: string\n\tcoat: string\n\tpattern: string\n}\nconst cats: Cat[] = [\n\t{\n\t\tbreed: \"Abyssinian\",\n\t\tcountry: \"Ethiopia\",\n\t\torigin: \"Natural/Standard\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Ticked\",\n\t},\n\t{\n\t\tbreed: \"Aegean\",\n\t\tcountry: \"Greece\",\n\t\torigin: \"Natural/Standard\",\n\t\tcoat: \"Semi-long\",\n\t\tpattern: \"Bi- or tri-colored\",\n\t},\n\t{\n\t\tbreed: \"American Curl\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Short/Long\",\n\t\tpattern: \"All\",\n\t},\n\t{\n\t\tbreed: \"American Bobtail\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Short/Long\",\n\t\tpattern: \"All\",\n\t},\n\t{\n\t\tbreed: \"American Shorthair\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Natural\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"All but colorpoint\",\n\t},\n\t{\n\t\tbreed: \"American Wirehair\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Rex\",\n\t\tpattern: \"All but colorpoint\",\n\t},\n\t{\n\t\tbreed: \"Arabian Mau\",\n\t\tcountry: \"Arabian Peninsula\",\n\t\torigin: \"Natural\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"\",\n\t},\n\t{\n\t\tbreed: \"Australian Mist\",\n\t\tcountry: \"Australia\",\n\t\torigin: \"Crossbreed\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Spotted and Classic tabby\",\n\t},\n\t{\n\t\tbreed: \"Asian\",\n\t\tcountry: \"developed in the United Kingdom (founding stock from Asia)\",\n\t\torigin: \"\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Evenly solid\",\n\t},\n\t{\n\t\tbreed: \"Asian Semi-longhair\",\n\t\tcountry: \"United Kingdom\",\n\t\torigin: \"Crossbreed\",\n\t\tcoat: \"Semi-long\",\n\t\tpattern: \"Solid\",\n\t},\n]\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(var(--columns), auto);\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTable {\n\t@Prop() columns = 1\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--columns\": this.columns.toString() }}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-body\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableBody {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: span var(--smoothly-table-cell-span, 1);\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0.3rem 1.1rem;\n\twhite-space: nowrap\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableCell {\n\t@Prop({ reflect: true }) span = 1\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--smoothly-table-cell-span\": this.span.toString(10) }}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../arrow.css\";\n\n:host {\n\tdisplay: contents;\n}\n\n:host>div {\n\tpadding: 0.3rem 1.1rem;\n}\n\n:host>div.content {\n\tgrid-column: span var(--smoothly-table-cell-span, 1);\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n}\n\n:host>div.content:hover {\n\tbackground-color: rgb(var(--smoothly-color-shade));\n}\n\n:host>div:first-child {\n\tcursor: pointer;\n}\n\n:host>div.detail {\n\tgrid-column: 1 / -1;\n\tgrid-row: 2;\n\toverflow: hidden;\n}\n\n:host[open]>div {\n\tbackground-color: rgb(var(--smoothly-color-tint));\n}\n\n:host:not([open])>div.detail {\n\tdisplay: none;\n}\n","import { Component, Event, EventEmitter, h, Host, Method, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-expandable-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableExpandableCell {\n\t@Prop({ reflect: true }) span = 1\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Event() smoothlyNextTableExpandableCellOpened: EventEmitter<void>\n\t@Event() smoothlyNextTableExpandableCellRegister: EventEmitter<void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyNextTableExpandableCellRegister.emit()\n\t}\n\t@Method()\n\tasync close(): Promise<void> {\n\t\tthis.open = false\n\t}\n\tclickHandler(): void {\n\t\tthis.open = !this.open\n\t\tthis.smoothlyNextTableExpandableCellOpened.emit()\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--smoothly-table-cell-span\": this.span.toString(10) }}>\n\t\t\t\t<div onClick={() => this.clickHandler()} class={\"content\"}>\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t\t<div class={\"detail\"}>\n\t\t\t\t\t<slot name={\"detail\"} />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../arrow.css\";\n\n:host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tgrid-template-rows: auto 0fr;\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n\tbox-sizing: border-box;\n}\n\n:host::slotted(*) {\n\tcursor: pointer;\n}\n\n:host::slotted(smoothly-next-table-cell:has(~ smoothly-next-table-cell:hover)),\n:host::slotted(smoothly-next-table-cell:hover ~ smoothly-next-table-cell),\n:host::slotted(smoothly-next-table-cell:hover) {\n\tbackground-color: rgb(var(--smoothly-color-shade));\n}\n\n:host[open] {\n\tbackground-color: rgb(var(--smoothly-color-tint));\n\tgrid-template-rows: auto 1fr;\n}\n\n:host>div:last-child {\n\tgrid-column: 1 / -1;\n\tcursor: default;\n\toverflow: hidden;\n\tbackground-color: rgb(var(--smoothly-color-tint));\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-expandable-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableExpandableRow {\n\tprivate div?: HTMLDivElement\n\t@Prop({ mutable: true, reflect: true }) open = false\n\n\tclickHandler(event: MouseEvent): void {\n\t\t;(this.div && event.composedPath().includes(this.div)) || (this.open = !this.open)\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host onClick={(e: MouseEvent) => this.clickHandler(e)}>\n\t\t\t\t<slot></slot>\n\t\t\t\t<div ref={e => (this.div = e)}>\n\t\t\t\t\t<slot name=\"detail\" />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tposition: sticky;\n\tz-index: 1;\n\tbottom: 0;\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--smoothly-color-tint));\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-foot\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableFoot {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\ttop: 0;\n\tposition: sticky;\n\tz-index: 1;\n\tbackground-color: rgb(var(--smoothly-color-tint));\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-head\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableHead {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n}\n\n:host:has(smoothly-next-table-expandable-cell) {\n\tgrid-template-rows: auto 0fr 0fr;\n}\n\n:host:has(smoothly-next-table-expandable-cell[open]) {\n\tgrid-template-rows: auto 1fr 0fr;\n}\n\n:host>::slotted(*) {\n\tpadding-top: 1em;\n\tpadding-bottom: 1em;\n}\n","import { Component, h, Host, Listen, VNode } from \"@stencil/core\"\nimport { SmoothlyNextTableExpandableCellCustomEvent } from \"../../../../components\"\n\n@Component({\n\ttag: \"smoothly-next-table-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableRow {\n\tprivate expandableCells = new Set<HTMLSmoothlyNextTableExpandableCellElement>()\n\t@Listen(\"smoothlyNextTableExpandableCellRegister\")\n\tsmoothlyNextTableExpandableCellRegisterHandler(event: SmoothlyNextTableExpandableCellCustomEvent<void>): void {\n\t\tevent.stopPropagation()\n\t\tthis.expandableCells.add(event.target)\n\t}\n\t@Listen(\"smoothlyNextTableExpandableCellOpened\")\n\tsmoothlyNextTableExpandableCellOpenedHandler(event: SmoothlyNextTableExpandableCellCustomEvent<void>): void {\n\t\tevent.stopPropagation()\n\t\tfor (const cell of this.expandableCells)\n\t\t\tevent.target != cell && cell.close()\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n}\n:host > div:first-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tposition: relative;\n\tcursor: pointer;\n}\n:host > div:last-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n}\n\n:host[align] > div:first-child {\n\tgrid-template-columns: subgrid;\n}\n:host[align] > div:first-child > div {\n\tdisplay: contents;\n}\n:host[align] > div:first-child > div > * {\n\tpadding: 0.3rem 1.1rem;\n}\n\n:host:not([align]) > div:first-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, auto);\n\tjustify-content: space-between;\n\tpadding: 0.3rem 1.1rem;\n}\n:host:not([align]) > div:first-child > div:first-child {\n\tjustify-self: start;\n\tdisplay: flex;\n\tgap: 1rem;\n}\n:host:not([align]) > div:first-child > div:last-child {\n\tjustify-self: end;\n\tdisplay: flex;\n\tgap: 1rem;\n}\n\n:host:not([open]) {\n\tgrid-template-rows: auto 0fr;\n}\n:host:not([open]) > :not(:first-child) {\n\tgrid-row: 2;\n\toverflow: hidden;\n}\n\n:host > div:first-child > div:first-child::before {\n\tcontent: '';\n\tdisplay: flex;\n\tposition: absolute;\n\ttop: 50%;\n\ttranslate: 0 -50%;\n\tleft: 0.3em;\n\theight: 0.4em;\n\twidth: 0.4em;\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-contrast));\n\tborder-right: 1px solid rgb(var(--smoothly-color-contrast));\n\ttransition: rotate 200ms ease-in-out;\n\trotate: -45deg;\n\topacity: 0.3;\n}\n:host > div:first-child:hover > div:first-child::before {\n\topacity: 1;\n}\n:host[open] > div:first-child > div:first-child::before {\n\trotate: 45deg;\n}\n\n:host > div:first-child {\n\tbackground-color: rgb(var(--smoothly-color-tint));\n}\n:host[open] > div:first-child,\n:host>div:first-child:only-child {\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n}\n:host > div:first-child:hover {\n\tbackground-color: rgb(var(--smoothly-color-shade));\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-row-group\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableRowGroup {\n\t@Prop({ reflect: true }) align = false\n\t@Prop({ reflect: true, mutable: true }) open = false\n\n\tclickHandler(): void {\n\t\tthis.open = !this.open\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div onClick={() => this.clickHandler()}>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name={\"start\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name={\"end\"} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 30em;\n\tmin-height: 3em;\n\tborder-radius: 5px;\n\tmargin: 0.5em;\n}\n:host > span.clean {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 0.5em 1em;\n}\n:host > span.icon {\n\tdisplay: grid;\n\twidth: 100%;\n\tgrid-template-columns: 1fr 5fr;\n}\n:host > span.icon > p {\n\tpadding-right: 1em;\n}\n:host > span > p {\n\ttext-align: left;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > smoothly-trigger > smoothly-icon {\n\tleft: 0;\n\tfont-size: 1.2em;\n\talign-self: center;\n\tjustify-self: center;\n}\n:host > smoothly-trigger {\n\tfont-size: 0.5em;\n\tfloat: right;\n\ttext-align: right;\n\tmargin-right: 0.2em;\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Component, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\nimport { Color, Notice, Trigger } from \"../../model\"\nimport { Icon } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-notification\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Notification {\n\t@Prop() notice: Notice\n\t@Prop() closable = true\n\t@Prop() icon = false\n\t@State() tick = {}\n\t@Event() remove: EventEmitter<Notice>\n\tprivate listener: Notice.Listener = notice => {\n\t\tif (notice.state == \"closed\")\n\t\t\tthis.remove.emit(notice)\n\t\telse\n\t\t\tthis.tick = {}\n\t}\n\tprivate get properties(): [Color, Icon | undefined] {\n\t\tlet result: [Color, Icon | undefined]\n\t\tswitch (this.notice.state) {\n\t\t\tcase \"delayed\":\n\t\t\tcase \"warning\":\n\t\t\t\tresult = [\"warning\", \"warning-outline\"]\n\t\t\t\tbreak\n\t\t\tcase \"success\":\n\t\t\t\tresult = [\"success\", \"checkmark-circle\"]\n\t\t\t\tbreak\n\t\t\tcase \"executing\":\n\t\t\t\tresult = [\"light\", \"hourglass-outline\"]\n\t\t\t\tbreak\n\t\t\tcase \"failed\":\n\t\t\t\tresult = [\"danger\", \"alert-circle\"]\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = [\"light\", undefined]\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n\n\t@Listen(\"trigger\")\n\tonTrigger(event: CustomEvent<Trigger>) {\n\t\tif (event.detail.name == \"close\") {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.notice.close()\n\t\t}\n\t}\n\n\t@Watch(\"notice\")\n\tonUpdatedNotice(newValue: Notice, oldValue?: Notice) {\n\t\tif (oldValue)\n\t\t\toldValue.unlisten(this.listener)\n\t\tnewValue.listen(this.listener)\n\t}\n\tcomponentDidLoad() {\n\t\tthis.onUpdatedNotice(this.notice)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host color={this.properties[0]} fill=\"solid\">\n\t\t\t\t{this.closable ? (\n\t\t\t\t\t<smoothly-trigger fill=\"clear\" name=\"close\">\n\t\t\t\t\t\t<smoothly-icon name=\"close-circle-outline\"></smoothly-icon>\n\t\t\t\t\t</smoothly-trigger>\n\t\t\t\t) : (\n\t\t\t\t\t\"\"\n\t\t\t\t)}\n\t\t\t\t<span class={this.icon ? \"icon\" : \"clean\"}>\n\t\t\t\t\t{this.icon ? <smoothly-icon name={this.properties[1]}></smoothly-icon> : \"\"}\n\t\t\t\t\t<p>{this.notice.message}</p>\n\t\t\t\t</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > aside {\n\tdisplay: flex;\n\tflex-wrap: wrap-reverse;\n\talign-content: stretch;\n\tposition: fixed;\n\tbottom: 3rem;\n\tleft: 0;\n\ttext-align: center;\n\tz-index: 100;\n}\n","import { Component, h, Listen, State } from \"@stencil/core\"\nimport { Notice } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-notifier\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Notifier {\n\t@State() notices: Notice[] = []\n\n\t@Listen(\"notice\")\n\tonNotice(event: CustomEvent<Notice>) {\n\t\tthis.notices = [...this.notices, event.detail]\n\t}\n\t@Listen(\"remove\")\n\tonRemove(event: CustomEvent<Notice>) {\n\t\tthis.notices = [...this.notices.filter(n => n != event.detail)]\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<slot></slot>,\n\t\t\t<aside>\n\t\t\t\t{this.notices.map(n => (\n\t\t\t\t\t<smoothly-notification notice={n}></smoothly-notification>\n\t\t\t\t))}\n\t\t\t</aside>,\n\t\t]\n\t}\n}\n","@import \"../input/shared.css\";\n\n:host {\n\tdisplay: flex;\n\tposition: relative;\n\twidth: max-content;\n\tpadding: 1em 0.7em 0.2em 0.8em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n:host > smoothly-slot-elements {\n\twhite-space: nowrap;\n}\n:host > smoothly-slot-elements.selected {\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 1rem;\n\twidth: 100%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmargin-right: 2px;\n}\n:host > smoothly-slot-elements.selected::after {\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: 0;\n\twidth: 2ch;\n}\n:host:not([looks=transparent]) > smoothly-slot-elements.selected::after {\n\tbackground: linear-gradient(90deg, rgba(var(--background-color, var(--smoothly-color-shade)), 0) 0%, rgba(var(--background-color, var(--smoothly-color-shade)), 1) 100%);\n}\n:host > smoothly-slot-elements.selected > * {\n\tdisplay: none;\n}\n:host > span.label {\n\tposition: absolute;\n\tleft: 0.4rem;\n\ttop: 0.6rem;\n\tcolor: rgb(var(--text-color, var(--smoothly-color-contrast)));\n\topacity: 0.8;\n\tuser-select: none;\n\tcursor: inherit;\n\ttransform-origin: top left;\n\ttransition: transform 100ms ease;\n}\n:host > smoothly-slot-elements.selected:not(:empty) + span.label {\n\ttop: 0.4em;\n\ttransform: scale(0.6);\n}\n","import {\n\tComponent,\n\tComponentDidLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Notice, Option } from \"../../model\"\nimport { Clearable } from \"../input/Clearable\"\nimport { Editable } from \"../input/Editable\"\nimport { Input } from \"../input/Input\"\nimport { Looks } from \"../input/Looks\"\nimport { Controls } from \"./menu\"\n\n@Component({\n\ttag: \"smoothly-picker\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPicker implements Clearable, Editable, Input, ComponentDidLoad {\n\tprivate valueReceivedOnLoad = false\n\tprivate initialValue = new Map<any, Option>()\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Element() element: HTMLSmoothlyPickerElement\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) open = false\n\t@Prop({ reflect: true }) mutable = false\n\t@Prop({ reflect: true }) multiple = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() validator?: (value: string) => boolean | { result: boolean; notice: Notice }\n\t@State() selected = new Map<any, Option>()\n\t@State() display: Node[]\n\t@Event() smoothlyPickerLoaded: EventEmitter<Controls>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any | any[]>> // multiple -> any[]\n\t@Event() smoothlyChange: EventEmitter<Record<string, any | any[]>> // multiple -> any[]\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tprivate controls?: Controls\n\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\tthis.listener.changed?.(this)\n\t}\n\n\t@Watch(\"selected\")\n\tselectedChanged(): void {\n\t\tconst selected = Array.from(this.selected.values(), option => option.value)\n\t\tthis.changed = !this.areValuesEqual(this.selected, this.initialValue)\n\t\tthis.smoothlyInput.emit({ [this.name]: this.multiple ? selected : selected.at(0) })\n\t\tthis.smoothlyChange.emit({ [this.name]: this.multiple ? selected : selected.at(0) })\n\t\tthis.display = Array.from(this.selected.values(), option => {\n\t\t\tconst span = document.createElement(\"span\")\n\t\t\toption.slotted.forEach(node => span.appendChild(node.cloneNode(true)))\n\t\t\treturn span\n\t\t})\n\t\t!this.valueReceivedOnLoad && (this.initialValue = new Map(this.selected))\n\t}\n\n\tcomponentDidLoad(): void | Promise<void> {\n\t\tif (this.controls)\n\t\t\tthis.smoothlyPickerLoaded.emit(this.controls)\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this.looks)\n\t\t}\n\t}\n\t@Listen(\"smoothlyPickerMenuLoaded\")\n\tmenuLoadedHandler(event: CustomEvent<Controls & { synced: () => boolean }>): void {\n\t\tthis.controls = event.detail\n\t}\n\t@Listen(\"smoothlyPickerOptionLoaded\")\n\toptionLoadedHandler(event: CustomEvent<Option>): void {\n\t\tif (event.detail.selected)\n\t\t\tthis.selected = this.multiple\n\t\t\t\t? new Map(this.selected.set(event.detail.value, event.detail).entries())\n\t\t\t\t: new Map().set(event.detail.value, event.detail)\n\t\t!this.valueReceivedOnLoad && (this.valueReceivedOnLoad = !this.valueReceivedOnLoad)\n\t}\n\n\t@Listen(\"smoothlyPickerOptionChange\")\n\toptionChangeHandler(event: CustomEvent<Option>): void {\n\t\tif ((this.readonly && !this.valueReceivedOnLoad) || !this.readonly)\n\t\t\tif (this.multiple)\n\t\t\t\tthis.selected = event.detail.selected\n\t\t\t\t\t? new Map(this.selected.set(event.detail.value, event.detail).entries())\n\t\t\t\t\t: !this.selected.delete(event.detail.value)\n\t\t\t\t\t? this.selected\n\t\t\t\t\t: new Map(this.selected.entries())\n\t\t\telse\n\t\t\t\tthis.selected = !event.detail.selected ? new Map() : new Map().set(event.detail.value, event.detail)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tclickHandler(event: MouseEvent) {\n\t\tthis.open = !event.composedPath().includes(this.element) || this.readonly ? false : !this.open\n\t}\n\t@Listen(\"focusin\", { target: \"window\" })\n\tfocusHandler(event: FocusEvent) {\n\t\tif (!event.composedPath().includes(this.element))\n\t\t\tthis.open = false\n\t}\n\t@Method()\n\tasync clear() {\n\t\tthis.selected.forEach(option => option.selected && option.element.clickHandler())\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tawait this.reset()\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tconst initialValueArray = Array.from(this.initialValue.values(), option => option.value)\n\t\tthis.selected.forEach(\n\t\t\toption => !initialValueArray.includes(option.value) && option.selected && option.set.selected(false)\n\t\t)\n\t\tthis.initialValue.forEach(option => option.set.selected(true))\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = new Map(this.selected)\n\t\tthis.selectedChanged()\n\t}\n\tareValuesEqual(selected: Map<any, Option>, initialValue: Map<any, Option>): boolean {\n\t\tconst initialValueArray = Array.from(initialValue.values(), option => option.value)\n\t\tconst selectedArray = Array.from(selected.values(), option => option.value)\n\t\treturn (\n\t\t\tselectedArray.length === initialValueArray.length &&\n\t\t\tinitialValueArray.every(value => selectedArray.includes(value))\n\t\t)\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host tabindex={0}>\n\t\t\t\t<smoothly-slot-elements class={\"selected\"} nodes={this.display} />\n\t\t\t\t<span class={\"label\"}>\n\t\t\t\t\t<slot name={\"label\"} />\n\t\t\t\t</span>\n\t\t\t\t{this.looks == \"border\" && (\n\t\t\t\t\t<button>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name={this.open ? \"caret-down-outline\" : \"caret-forward-outline\"} />\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t\t<slot name=\"child\" />\n\t\t\t\t<smoothly-picker-menu\n\t\t\t\t\topen={this.open}\n\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t\tmultiple={this.multiple}\n\t\t\t\t\tmutable={this.mutable}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tvalidator={this.validator}>\n\t\t\t\t\t<slot name=\"search\" slot=\"search\" />\n\t\t\t\t\t<slot name=\"display\" slot=\"display\" />\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-picker-menu>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n:host smoothly-form {\n\tmax-width: 50rem;\n}\n:host .counter {\n\tposition: relative;\n\twidth: 3rem;\n\theight: 3rem;\n}\n:host .counter-button {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: 0;\n\tmargin: 0;\n\theight: 3rem;\n\twidth: 3rem;\n\tbackground-color: inherit;\n\tborder: none;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n:host .controlled smoothly-input:not([readonly]),\n:host .controlled smoothly-picker:not([readonly]) {\n\toutline: 1px solid rgb(var(--smoothly-success-color));\n}\n","import { Component, h, Host, Listen, State } from \"@stencil/core\"\nimport { Data, Notice } from \"../../../model\"\nimport { Controls } from \"../menu\"\n\nfunction validateEmail(email: string) {\n\treturn email.match(/^.+@.+/) ? true : { result: false, notice: Notice.failed(\"That is not an email\") }\n}\n\n@Component({\n\ttag: \"smoothly-picker-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPickerDemo {\n\tprivate controls?: Controls\n\tprivate users: Record<string, string | undefined> = {\n\t\t\"giovani@rocket.com\": \"giovani doe\",\n\t\t\"jessie@rocket.com\": \"jessie doe\",\n\t\t\"james@rocket.com\": \"james doe\",\n\t}\n\t@State() counter = 3\n\t@State() data = {\n\t\tmessage: \"hello world\",\n\t\temails: [{ value: \"jessie@rocket.com\" }, { value: \"james@rocket.com\" }],\n\t\toptions: [\n\t\t\t{ value: \"giovani@rocket.com\" },\n\t\t\t{ value: \"john@example.com\" },\n\t\t\t{ value: \"jane@example.com\" },\n\t\t\t{ value: \"jack@example.com\" },\n\t\t\t{ value: \"jessica@example.com\" },\n\t\t\t{ value: \"julia@example.com\" },\n\t\t\t{ value: \"jayden@example.com\" },\n\t\t\t{ value: \"jake@example.com\" },\n\t\t\t{ value: \"jamie@example.com\" },\n\t\t\t{ value: \"jasmine@example.com\" },\n\t\t],\n\t}\n\t@State() change?: SmoothlyPickerDemo[\"data\"]\n\tinputHandler(event: CustomEvent<Data>) {\n\t\tif (this.change) {\n\t\t\tthis.change = {\n\t\t\t\t...this.change,\n\t\t\t\t...event.detail,\n\t\t\t}\n\t\t\tconsole.log(\"demo input\", this.change)\n\t\t}\n\t}\n\t@Listen(\"smoothlyFormSubmit\")\n\tsubmitHandler(event: CustomEvent<Data>) {\n\t\tconsole.log(\"submitted\", event.detail)\n\t}\n\tclickHandler() {\n\t\tif (!this.change)\n\t\t\tthis.controls?.remember()\n\t\telse\n\t\t\tthis.controls?.restore()\n\t\tthis.change = this.change ? undefined : { ...this.data, emails: [...this.data.emails] }\n\t}\n\tloadedHandler(event: CustomEvent<Controls>) {\n\t\tthis.controls = event.detail\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button onClick={() => (this.counter += 1)}>Add one</smoothly-button>\n\t\t\t\t\t<smoothly-button onClick={() => (this.counter -= 1)}>Remove one</smoothly-button>\n\t\t\t\t\t<smoothly-picker\n\t\t\t\t\t\tclass={\"counter\"}\n\t\t\t\t\t\tkey={Array.from({ length: this.counter }).toString()}\n\t\t\t\t\t\tname=\"counter\"\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\tmutable>\n\t\t\t\t\t\t{Array.from({ length: this.counter }).map((_, index) => (\n\t\t\t\t\t\t\t<smoothly-picker-option value={index} selected={index < this.counter - 1}>\n\t\t\t\t\t\t\t\t{index}\n\t\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<button slot=\"child\" class={\"counter-button\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"add-outline\"} />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t</div>\n\n\t\t\t\t<h5>Controlled input</h5>\n\t\t\t\t<smoothly-button color={\"secondary\"} onClick={() => this.clickHandler()}>\n\t\t\t\t\t{!this.change ? \"start edit\" : \"end edit\"}\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-form class={\"controlled\"} looks=\"line\" onSmoothlyFormInput={e => this.inputHandler(e)}>\n\t\t\t\t\t<smoothly-input readonly={!this.change} name=\"message\" value={this.data.message}>\n\t\t\t\t\t\tMessage\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-picker\n\t\t\t\t\t\tname=\"emails\"\n\t\t\t\t\t\tmutable\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\treadonly={!this.change}\n\t\t\t\t\t\tvalidator={validateEmail}\n\t\t\t\t\t\tonSmoothlyPickerLoaded={e => this.loadedHandler(e)}>\n\t\t\t\t\t\t<span slot=\"label\">Emails</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" slot=\"display\" name=\"person-add-outline\" />\n\t\t\t\t\t\t{(this.change?.emails ?? this.data.emails).map(email => (\n\t\t\t\t\t\t\t<smoothly-picker-option\n\t\t\t\t\t\t\t\tkey={email.value}\n\t\t\t\t\t\t\t\tvalue={email}\n\t\t\t\t\t\t\t\tselected\n\t\t\t\t\t\t\t\tsearch={[this.users[email.value] ?? []].flat()}>\n\t\t\t\t\t\t\t\t<span>{this.users[email.value]}</span>\n\t\t\t\t\t\t\t\t<span slot=\"label\">{email.value}</span>\n\t\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" slot=\"display\" name=\"person-outline\" />\n\t\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{this.data.options.map(email => (\n\t\t\t\t\t\t\t<smoothly-picker-option key={email.value} value={email} search={[this.users[email.value] ?? []].flat()}>\n\t\t\t\t\t\t\t\t<span>{this.users[email.value]}</span>\n\t\t\t\t\t\t\t\t<span slot=\"label\">{email.value}</span>\n\t\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" slot=\"display\" name=\"person-outline\" />\n\t\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-clear slot={\"submit\"} type=\"form\" color=\"danger\" fill=\"solid\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-button slot={\"submit\"} color={\"secondary\"} onClick={() => this.controls?.clear()}>\n\t\t\t\t\t\tRemoved added by mutation\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-submit size=\"icon\" slot=\"submit\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" />\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\n\t\t\t\t<h5>uncontrolled inputs</h5>\n\t\t\t\t<smoothly-form onSmoothlyFormSubmit={e => console.log(\"submitted\", e.detail)} looks=\"line\">\n\t\t\t\t\t<smoothly-input name=\"purpose\" type=\"text\">\n\t\t\t\t\t\tPurpose\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-picker multiple mutable name=\"emails\" validator={validateEmail}>\n\t\t\t\t\t\t<span slot=\"label\">Emails</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"james@rocket.com\"}>james@rocket.com</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option selected value={\"jessie@rocket.com\"}>\n\t\t\t\t\t\t\tjessie@rocket.com\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"giovanni@rocket.com\"}>giovanni@rocket.com</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit</smoothly-submit>\n\t\t\t\t\t<smoothly-input-clear type=\"form\" color=\"danger\" fill=\"solid\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-picker name=\"shape\">\n\t\t\t\t\t\t<span slot=\"label\">Shape</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"circle\"}>\n\t\t\t\t\t\t\t<span slot=\"label\">Circle</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"ellipse-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"cube\"}>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Cube</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cube-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"square\"} selected>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Square</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"square-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-picker multiple readonly name=\"animals\">\n\t\t\t\t\t\t<span slot=\"label\">Animals</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option selected value={\"cat\"}>\n\t\t\t\t\t\t\tCat\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"dog\"}>Dog</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"fish\"}>Fish</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<smoothly-picker looks=\"border\" name=\"icon\" multiple>\n\t\t\t\t\t<span slot=\"label\">Icon</span>\n\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t<smoothly-picker-option value={\"circle\"} required>\n\t\t\t\t\t\t<span slot=\"label\">Circle</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"ellipse-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"cube\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Cube</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cube-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"square\"} selected>\n\t\t\t\t\t\t<span slot={\"label\"}>Square</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"square-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"airplane\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Airplane</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"airplane-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"alarm\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Alarm</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"alarm-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"archive\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Archive</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"archive-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"bag\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Bag</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"bag-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"cafe\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Cafe</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cafe-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"disc\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Disc</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"disc-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"earth\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Earth</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"earth-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"fast-food\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Fast food</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"fast-food-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t</smoothly-picker>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.5rem;\n\tposition: absolute;\n\tz-index: 4;\n\tleft: -1px;\n\tright: -1px;\n\tmin-width: max-content;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tpadding: 0.5rem;\n\tborder: rgb(var(--text-color, var(--smoothly-color-contrast))) solid 1px;\n}\n:host:not(.flip) {\n\ttop: 100%;\n}\n:host.flip {\n\tbottom: 100%;\n}\n:host:not([open]) {\n\tdisplay: none;\n}\n:host > div.list {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr auto;\n\talign-items: center;\n\trow-gap: 0.5ch;\n\toverflow-y: auto;\n\tmax-height: calc(1.75rem * 10 + 0.5ch * 9);\n\tpadding-right: 0.5rem;\n\tpadding-bottom: 0.25rem;\n}\n:host > .hide {\n\tdisplay: none;\n}\n:host > div.controls {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\tgap: 0.5rem;\n\ttransition: grid-template-columns 200ms linear;\n}\n:host > div.controls > button:disabled {\n\topacity: 0.3;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\nimport global from \"../../../global/index\"\nimport { Notice, Option } from \"../../../model\"\nimport { Looks } from \"../../input/Looks\"\nimport { Slot } from \"../slot-elements\"\n\nconst Observers = global().Observers\n\nfunction* chain<T>(...iterables: Iterable<T>[]): Iterable<T> {\n\tfor (const iterable of iterables)\n\t\tyield* iterable\n}\n\nfunction restore<T extends Option>(target: T | undefined, source: Option): T | undefined {\n\ttarget?.set.selected((target.selected = source.selected))\n\ttarget?.set.readonly((target.readonly = source.readonly))\n\ttarget?.set.visible((target.visible = source.visible))\n\ttarget?.set.value((target.value = source.value))\n\ttarget?.set.search((target.search = source.search))\n\treturn target\n}\nfunction restoreListener(ref: HTMLElement | undefined, option: Option) {\n\tref?.addEventListener(\"smoothlyPickerOptionLoad\", (e: CustomEvent<Option>) => restore(e.detail, option))\n}\nexport interface Controls {\n\tremember: () => void\n\trestore: () => void\n\tclear: () => void\n}\n@Component({\n\ttag: \"smoothly-picker-menu\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPickerMenu {\n\t@Element() element: HTMLSmoothlyPickerMenuElement\n\t@Prop() looks: Looks\n\t@Prop({ reflect: true }) open = false\n\t@Prop({ reflect: true }) multiple = false\n\t@Prop({ reflect: true }) mutable = false\n\t@Prop({ reflect: true }) readonly = false\n\t@Prop() validator?: (value: string) => boolean | { result: boolean; notice: Notice }\n\t@State() backend = new Map<any, Option & { clone: Node }>() // value -> Option\n\t@State() options = new Map<any, Option>() // value -> Option\n\t@State() created = new Map<any, Option.Created>()\n\t@State() search = \"\"\n\t@State() valid = false\n\t@State() display: Node[]\n\t@State() flip = false\n\t@State() flipChecked = false\n\t@Event() notice: EventEmitter<Notice>\n\t@Event() smoothlyPickerMenuLoaded: EventEmitter<Controls>\n\tprivate memory?: { backend: SmoothlyPickerMenu[\"backend\"]; options: SmoothlyPickerMenu[\"options\"] }\n\tprivate listElement?: HTMLElement\n\tprivate searchElement?: HTMLElement\n\n\tcomponentWillLoad() {\n\t\tif (!Observers.has(this.element)) {\n\t\t\tconst threshold = 0.4\n\t\t\tObservers.set(\n\t\t\t\tthis.element,\n\t\t\t\tnew IntersectionObserver(\n\t\t\t\t\tentries =>\n\t\t\t\t\t\t(entries.find(entry => entry.target == this.element)?.intersectionRatio ?? 0) < threshold &&\n\t\t\t\t\t\t!this.flipChecked &&\n\t\t\t\t\t\t((this.flip = !this.flip), (this.flipChecked = true)),\n\t\t\t\t\t{ threshold }\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\t}\n\tcomponentDidLoad() {\n\t\tthis.smoothlyPickerMenuLoaded.emit({\n\t\t\tremember: () => {\n\t\t\t\tthis.memory = {\n\t\t\t\t\tbackend: new Map(Array.from(this.backend.entries(), ([value, option]) => [value, { ...option }])),\n\t\t\t\t\toptions: new Map(Array.from(this.options.entries(), ([value, option]) => [value, { ...option }])),\n\t\t\t\t}\n\t\t\t},\n\t\t\trestore: () => {\n\t\t\t\tif (this.memory) {\n\t\t\t\t\tfor (const option of this.options.values()) {\n\t\t\t\t\t\tconst memory = this.memory.options.get(option.value)\n\t\t\t\t\t\tif (memory != undefined)\n\t\t\t\t\t\t\trestore(option, memory)\n\t\t\t\t\t\telse if (this.created.get(option.value))\n\t\t\t\t\t\t\toption.set.selected((option.selected = false))\n\t\t\t\t\t}\n\t\t\t\t\tfor (const option of this.backend.values()) {\n\t\t\t\t\t\tconst memory = this.memory.backend.get(option.value)\n\t\t\t\t\t\tif (memory != undefined)\n\t\t\t\t\t\t\trestore(option, memory)\n\t\t\t\t\t\telse if (this.created.get(option.value))\n\t\t\t\t\t\t\toption.set.selected((option.selected = false))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tclear: () => {\n\t\t\t\tconst backend = Array.from(this.backend.entries())\n\t\t\t\tbackend.filter(([key]) => this.created.has(key)).forEach(([, option]) => option.set.selected(false))\n\t\t\t\tthis.backend = new Map(backend.filter(([key]) => !this.created.has(key)))\n\t\t\t\tthis.options = new Map(Array.from(this.options.entries()).filter(([key]) => !this.created.has(key)))\n\t\t\t\tthis.created = new Map()\n\t\t\t},\n\t\t})\n\t}\n\tdisconnectedCallback() {\n\t\tif (!this.element.parentElement) {\n\t\t\tObservers.get(this.element)?.disconnect()\n\t\t\tObservers.remove(this.element)\n\t\t}\n\t}\n\t@Watch(\"open\")\n\topenChange() {\n\t\tconst observer = Observers.get(this.element)\n\t\tif (this.open)\n\t\t\tobserver?.observe(this.element)\n\t\telse\n\t\t\tobserver?.unobserve(this.element)\n\t}\n\n\t@Watch(\"readonly\")\n\treadonlyChanged() {\n\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\toption.element, option.set.readonly(this.readonly)\n\t}\n\t@Listen(\"scroll\", { target: \"window\" })\n\tscrollHandler() {\n\t\tthis.flipChecked = false\n\t}\n\t@Listen(\"smoothlyPickerOptionLoad\")\n\toptionLoadHandler(event: CustomEvent<Option.Load>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail.set.readonly(this.readonly)\n\n\t\t\tconst current = this.options.get(event.detail.value)\n\t\t\tif (current)\n\t\t\t\tevent.detail.set.selected(current.element.selected)\n\t\t}\n\t}\n\t@Listen(\"smoothlyPickerOptionLoaded\")\n\toptionLoadedHandler(event: CustomEvent<Option>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tconst current = restore(this.backend.get(event.detail.value), event.detail)\n\t\t\tthis.backend = new Map(\n\t\t\t\tthis.backend\n\t\t\t\t\t.set(event.detail.value, {\n\t\t\t\t\t\t...event.detail,\n\t\t\t\t\t\tclone: current?.clone ?? event.detail.element.cloneNode(true),\n\t\t\t\t\t})\n\t\t\t\t\t.entries()\n\t\t\t)\n\t\t} else\n\t\t\tthis.options.set(event.detail.value, event.detail)\n\t}\n\t@Listen(\"smoothlyPickerOptionChange\")\n\toptionChangeHandler(event: CustomEvent<Option>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.options.get(event.detail.value)?.set.selected(event.detail.selected)\n\t\t} else {\n\t\t\tconst current = this.backend.get(event.detail.value)\n\t\t\tif (current?.element.parentElement)\n\t\t\t\tcurrent?.set.selected(event.detail.selected)\n\t\t}\n\n\t\tif (!this.readonly && !this.multiple && event.detail.selected)\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\tif (option.value != event.detail.value)\n\t\t\t\t\toption.set.selected(false)\n\t}\n\tinputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tevent.stopPropagation()\n\t\tthis.search = event.detail.search\n\t\tif (!this.search) {\n\t\t\tthis.valid = false\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\toption.set.visible(true)\n\t\t} else {\n\t\t\tthis.valid = !Array.from(this.options.values()).find(option => option.value == this.search)\n\t\t\tconst search = this.search.toLocaleLowerCase()\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values())) {\n\t\t\t\tconst value = option.value.toString().toLocaleLowerCase().includes(search)\n\t\t\t\tconst searches = option.search.some(value => value.includes(search))\n\t\t\t\tconst result = value || searches\n\t\t\t\toption.set.visible(result)\n\t\t\t}\n\t\t}\n\t}\n\taddHandler() {\n\t\tconst validation = !this.validator ? true : this.validator(this.search)\n\t\tif (this.mutable) {\n\t\t\tif (typeof validation == \"object\" ? validation.result : validation) {\n\t\t\t\tif (!this.multiple)\n\t\t\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\t\t\toption.set.selected(false)\n\t\t\t\tthis.created = new Map(this.created.set(this.search, { value: this.search, selected: true }).entries())\n\t\t\t\tthis.search = \"\"\n\t\t\t\tthis.searchElement?.focus()\n\t\t\t\tthis.valid = false\n\t\t\t}\n\t\t\tif (typeof validation == \"object\")\n\t\t\t\tthis.notice.emit(validation.notice)\n\t\t}\n\t}\n\tkeyDownHandler(event: KeyboardEvent) {\n\t\tif (event.key == \"Enter\") {\n\t\t\tevent.preventDefault()\n\t\t\tthis.addHandler()\n\t\t}\n\t}\n\t@Listen(\"smoothlySlotEmpty\")\n\temptyDisplayHandler(event: CustomEvent<Slot>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail.set.nodes(this.display)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host class={{ valid: this.valid, flip: this.flip }}>\n\t\t\t\t<smoothly-slotted-elements class={\"hide\"} onSmoothlySlottedChange={e => (this.display = e.detail)}>\n\t\t\t\t\t<slot name=\"display\" />\n\t\t\t\t</smoothly-slotted-elements>\n\t\t\t\t<div class={\"hide\"}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t{Array.from(this.created.values(), option => (\n\t\t\t\t\t\t<smoothly-picker-option key={option.value} value={option.value} selected={option.selected}>\n\t\t\t\t\t\t\t{option.value}\n\t\t\t\t\t\t\t<smoothly-slot-elements slot=\"display\" nodes={this.display} />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t\t<div class={\"controls\"}>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tref={e => (this.searchElement = e)}\n\t\t\t\t\t\tname=\"search\"\n\t\t\t\t\t\tvalue={this.search}\n\t\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\t\tonKeyDown={e => this.keyDownHandler(e)}\n\t\t\t\t\t\tonSmoothlyFormDisable={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyBlur={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}>\n\t\t\t\t\t\t<slot name=\"search\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t{this.mutable && !this.readonly ? (\n\t\t\t\t\t\t<button onClick={() => this.addHandler()} disabled={!this.valid} type={\"button\"}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"add-outline\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t<div class={\"list\"} ref={e => (this.listElement = e)}>\n\t\t\t\t\t{Array.from(this.backend.values())\n\t\t\t\t\t\t.sort((a, b) => a.position - b.position)\n\t\t\t\t\t\t.map(option => (\n\t\t\t\t\t\t\t<smoothly-slot-elements ref={e => restoreListener(e, option)} clone={false} nodes={option.clone} />\n\t\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n:host(:not([visible])) {\n\tdisplay: none;\n}\n:host > * {\n\tcursor: pointer;\n\tpadding: 0.25ch 0.5rem\n}\n:host > div.display {\n\tpadding-left: 0;\n}\n:host > button {\n\tcolor: unset;\n\tbackground-color: inherit;\n\tborder: none;\n\tpadding-right: 0;\n}\n:host > div.content {\n\tdisplay: flex;\n\tcolumn-gap: 1rem;\n\tjustify-content: space-between;\n}\n:host([required]) > * {\n\tcursor: default;\n}\n:host([required]) > button {\n\topacity: 0.65;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { Option } from \"../../../model\"\n@Component({\n\ttag: \"smoothly-picker-option\",\n\tstyleUrl: \"style.css\",\n\tshadow: true,\n})\nexport class SmoothlyPickerOption {\n\t@Element() element: HTMLSmoothlyPickerOptionElement\n\t@Prop({ mutable: true, reflect: true }) selected = false\n\t@Prop({ mutable: true, reflect: true }) visible = true\n\t@Prop({ mutable: true }) value: any\n\t@Prop({ mutable: true }) search: string[] = []\n\t@Prop({ reflect: true }) position = -1\n\t@Prop({ reflect: true }) required = false\n\t@State() readonly = false\n\t@State() slotted: Node[] = []\n\t@Event() smoothlyPickerOptionLoad: EventEmitter<Option.Load>\n\t@Event() smoothlyPickerOptionLoaded: EventEmitter<Option>\n\t@Event() smoothlyPickerOptionChange: EventEmitter<Option>\n\n\tget option(): Option {\n\t\treturn {\n\t\t\telement: this.element,\n\t\t\tselected: this.selected,\n\t\t\treadonly: this.readonly,\n\t\t\trequired: this.required,\n\t\t\tvisible: this.visible,\n\t\t\tsearch: this.search,\n\t\t\tvalue: this.value,\n\t\t\tslotted: this.slotted,\n\t\t\tposition:\n\t\t\t\tthis.position >= 0 || !this.element.parentElement?.parentElement\n\t\t\t\t\t? this.position\n\t\t\t\t\t: Array.from(this.element.parentElement.parentElement.children).indexOf(this.element.parentElement),\n\t\t\tset: {\n\t\t\t\tselected: selected => (this.selected = selected),\n\t\t\t\treadonly: readonly => (this.readonly = readonly),\n\t\t\t\tvisible: visible => (this.visible = visible),\n\t\t\t\tsearch: search => (this.search = search),\n\t\t\t\tvalue: value => (this.value = value),\n\t\t\t},\n\t\t}\n\t}\n\t@Watch(\"position\")\n\t@Watch(\"selected\")\n\t@Watch(\"slotted\")\n\temitChange() {\n\t\tif (this.element.parentElement)\n\t\t\tthis.smoothlyPickerOptionChange.emit(this.option)\n\t}\n\n\tcomponentWillLoad() {\n\t\tif (this.required)\n\t\t\tthis.selected = true\n\t\tthis.smoothlyPickerOptionLoad.emit((({ slotted, ...option }) => option)(this.option))\n\t}\n\tcomponentDidLoad() {\n\t\tthis.smoothlyPickerOptionLoaded.emit(this.option)\n\t}\n\tslottedChangeHandler(event: CustomEvent<Node[]>) {\n\t\tevent.stopPropagation()\n\t\tthis.slotted = event.detail\n\t}\n\t@Method()\n\tasync clickHandler() {\n\t\tif (!this.readonly && !this.required)\n\t\t\tthis.selected = !this.selected\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host class={{ visible: this.visible }} onClick={() => this.clickHandler()}>\n\t\t\t\t<div part=\"display\" class={\"display\"}>\n\t\t\t\t\t<slot name=\"display\" />\n\t\t\t\t</div>\n\t\t\t\t<div part=\"content\" class={\"content\"}>\n\t\t\t\t\t<smoothly-slotted-elements onSmoothlySlottedChange={e => this.slottedChangeHandler(e)} clone>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</smoothly-slotted-elements>\n\t\t\t\t\t<slot name={\"label\"} />\n\t\t\t\t</div>\n\t\t\t\t<button type={\"button\"}>\n\t\t\t\t\t<smoothly-icon name={this.selected ? \"checkbox-outline\" : \"square-outline\"} />\n\t\t\t\t</button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: inline-flex;\n\tposition: relative;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host:not([visible]) > div.popup {\n\tdisplay: none;\n}\n:host > div.popup {\n\tdisplay: inline;\n\tposition: absolute;\n\tpadding: 0.3em;\n\tleft: var(--left);\n\tright: var(--right);\n\tbackground-color: rgb(238, 238, 238);\n\tborder-color: rgb(238, 238, 238);\n\tborder-style: solid;\n\tborder-width: 0.1em;\n\tborder-radius: 0.6em;\n\tz-index: 3;\n}\n:host[direction=down] > div.popup {\n\ttop: 2.2em;\n\tbox-shadow: 6px 5px 9px -9px black, 5px 6px 9px -9px black;\n}\n:host[direction=up] > div.popup {\n\tbottom: 2.2em;\n\tbox-shadow: -6px -5px 9px -9px black, -5px -6px 9px -9px black;\n}\n:host:not([visible]) > div.background {\n\tdisplay: none;\n}\n:host > div.background {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100vw;\n\theight: 100vh;\n\tz-index: 2;\n}\n:host:not([visible]) > div.arrow {\n\tdisplay: none;\n}\n:host > div.arrow {\n\tbackground-color: rgb(238, 238, 238);\n\tborder-color: rgb(238, 238, 238);\n\tz-index: 2;\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: 12px;\n\theight: 12px;\n\ttransform: rotate(45deg);\n\tleft: calc(var(--left) + 1em);\n\tright: calc(var(--right) + 1em);\n}\n:host[direction=down] > div.arrow {\n\ttop: 2em;\n\tborder-top-style: solid;\n\tborder-top-width: 1px;\n\tborder-left-style: solid;\n\tborder-left-width: 1px;\n}\n:host[direction=up] > div.arrow {\n\tbottom: 2em;\n\tborder-bottom-style: solid;\n\tborder-bottom-width: 1px;\n\tborder-right-style: solid;\n\tborder-right-width: 1px;\n}\n:host > div.pointer {\n\tcursor: pointer;\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Component, Event, EventEmitter, h, Host, Prop, State } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-popup\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPopup {\n\t@Prop({ mutable: true, reflect: true }) visible = false\n\t@Prop({ mutable: true, reflect: true }) direction: \"up\" | \"down\" = \"down\"\n\t@State() cssVariables: { \"--left\"?: string; \"--right\"?: string } = { \"--left\": \"0.1em\" }\n\t@Event() popup: EventEmitter<boolean>\n\tprivate popupElement: HTMLElement | undefined\n\n\tprivate onClick() {\n\t\tif (this.visible == false) {\n\t\t\tthis.popupElement?.style.setProperty(\"display\", \"block\")\n\t\t\tthis.cssVariables =\n\t\t\t\t(this.popupElement?.getBoundingClientRect().right ?? 0) >= window.innerWidth\n\t\t\t\t\t? { \"--right\": \"0.1em\" }\n\t\t\t\t\t: (this.popupElement?.getBoundingClientRect().left ?? 0) < 0\n\t\t\t\t\t? { \"--left\": \"0.1em\" }\n\t\t\t\t\t: this.cssVariables\n\t\t\tthis.popupElement?.style.removeProperty(\"display\")\n\t\t}\n\t\tthis.visible = !this.visible\n\t\tthis.popup.emit(this.visible)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host style={{ ...this.cssVariables }}>\n\t\t\t\t<div class=\"pointer\" onClick={() => this.onClick()}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"background\" onClick={() => this.onClick()}></div>\n\t\t\t\t<div class=\"arrow\" onClick={() => this.onClick()}></div>\n\t\t\t\t<div class=\"popup\" ref={el => (this.popupElement = el)}>\n\t\t\t\t\t<slot name=\"popup\"></slot>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\topacity: 0.5;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-quiet\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyQuiet {\n\t@Prop() color: string\n\trender() {\n\t\treturn (\n\t\t\t<Host color={this.color}>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\nbutton:focus {\n\toutline: none;\n}\nsmoothly-selector {\n\toutline: none;\n}\nbutton {\n\tdisplay: block;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-select-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySelectDemo {\n\trender() {\n\t\treturn [\n\t\t\t<smoothly-tab-switch>\n\t\t\t\t<smoothly-tab label=\"test1\" open>\n\t\t\t\t\tHello world!\n\t\t\t\t</smoothly-tab>\n\t\t\t\t<smoothly-tab label=\"test2\">this is a test message!</smoothly-tab>\n\t\t\t\t<smoothly-tab label=\"test3\">this is a test message again!</smoothly-tab>\n\t\t\t</smoothly-tab-switch>,\n\t\t]\n\t}\n}\n",":host {\n\tdisplay: block;\n\theight: 1rem;\n}\n:host(::before) {\n\tcontent: \"\";\n\tdisplay: block;\n\twidth: var(--width);\n\theight: 100%;\n\tborder-radius: 0.4rem;\n\tbackground-image: linear-gradient(90deg, rgb(var(--color, var(--smoothly-dark-color))) 0, transparent 2.5rem, rgb(var(--color, var(--smoothly-dark-color))) 5rem);\n\tbackground-size: calc(var(--distance) + 5rem);\n\tanimation-duration: var(--period, 1.6s);\n\tanimation-iteration-count: infinite;\n\tanimation-timing-function: linear;\n\tanimation-name: shine-lines-left;\n}\n@keyframes shine-lines-left {\n\t0% {\n\t\tbackground-position: -5rem;\n\t}\n\t40%,\n\t100% {\n\t\tbackground-position: var(--distance);\n\t}\n}\n:host([align=center]::before) {\n\tmargin: 0 auto;\n\tanimation-name: shine-lines-center;\n}\n@keyframes shine-lines-center {\n\t0% {\n\t\tbackground-position: calc((var(--width) - var(--distance)) / 2 - 5rem);\n\t}\n\t40%,\n\t100% {\n\t\tbackground-position: calc(var(--width) + (var(--distance) - var(--width)) / 2);\n\t}\n}\n:host([align=right]::before) {\n\tmargin: 0;\n\tmargin-left: auto;\n\tanimation-name: shine-lines-right;\n}\n@keyframes shine-lines-right {\n\t0% {\n\t\tbackground-position: calc(var(--width) - var(--distance) - 5rem);\n\t}\n\t40%,\n\t100% {\n\t\tbackground-position: var(--width);\n\t}\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-skeleton\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySkeleton {\n\t@Prop() widths: string[] = [\"8rem\", \"9rem\", \"10rem\"]\n\t@Prop({ mutable: true }) width: string\n\t@Prop() color: string\n\t@Prop() period: number\n\t@Prop() distance: string\n\t@Prop({ reflect: true }) align: \"left\" | \"center\" | \"right\" = \"left\"\n\tcomponentWillLoad() {\n\t\tthis.width = this.width ?? this.widths[Math.floor(Math.random() * this.widths.length)]\n\t}\n\trender() {\n\t\tconst cssVariables = {\n\t\t\t\"--width\": this.width,\n\t\t\t\"--distance\": this.distance ?? \"10rem\",\n\t\t\t...(this.color ? { \"--color\": this.color } : undefined),\n\t\t\t...(this.period ? { \"--period\": this.period + \"s\" } : undefined),\n\t\t}\n\t\treturn <Host style={cssVariables}></Host>\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, Watch } from \"@stencil/core\"\n\nexport interface Slot {\n\tset: {\n\t\tnodes: (nodes: Node | Node[]) => void\n\t}\n}\n\n@Component({\n\ttag: \"smoothly-slot-elements\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySlotElements {\n\t@Element() element: HTMLElement\n\t@Prop() clone = true\n\t@Prop({ mutable: true }) nodes?: Node | Node[]\n\t@Event() smoothlySlotEmpty: EventEmitter<Slot>\n\n\tcomponentWillLoad() {\n\t\tif (!this.nodes)\n\t\t\tthis.smoothlySlotEmpty.emit({\n\t\t\t\tset: {\n\t\t\t\t\tnodes: nodes => (this.nodes = nodes),\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\t@Watch(\"nodes\")\n\tcomponentDidLoad() {\n\t\tthis.element.innerHTML = \"\"\n\t\tif (this.nodes)\n\t\t\tif (Array.isArray(this.nodes))\n\t\t\t\tthis.nodes.forEach(node => this.element.appendChild(this.clone ? node.cloneNode(true) : node))\n\t\t\telse\n\t\t\t\tthis.element.appendChild(this.clone ? this.nodes.cloneNode(true) : this.nodes)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-slotted-elements\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySottedElement {\n\t@Element() element: HTMLElement\n\t@Prop() clone = true\n\t@Event() smoothlySlottedChange: EventEmitter<Node[]>\n\n\tcomponentDidRender() {\n\t\tconst slotted = Array.from(this.element.childNodes, child => {\n\t\t\tlet result: Node | Node[]\n\t\t\tif (child instanceof HTMLSlotElement) {\n\t\t\t\tconst assigned = child.assignedNodes()\n\t\t\t\tresult = assigned.length\n\t\t\t\t\t? assigned.map(child => (this.clone ? child.cloneNode(true) : child))\n\t\t\t\t\t: this.clone\n\t\t\t\t\t? child.cloneNode(true)\n\t\t\t\t\t: child\n\t\t\t} else\n\t\t\t\tresult = child\n\t\t\treturn result\n\t\t}).flat()\n\t\tthis.smoothlySlottedChange.emit(Array.from(slotted, child => (this.clone ? child.cloneNode(true) : child)))\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host[hidden] {\n\tdisplay: none;\n}\n:host {\n\t--spinner-time: 1.4s;\n\t--spinner-color: var(--smoothly-color-contrast);\n\t--spinner-background: var(--smoothly-color);\n\t--spinner-background-opacity: var(--smoothly-semitransparent, 0.8);\n\tdisplay: block;\n\tstroke: rgb(var(--spinner-color));\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n}\n:host:not([overlay]) {\n\twidth: var(--spinner-size);\n\theight: var(--spinner-size);\n}\n:host[overlay] {\n\tposition: absolute;\n\tinset: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 4;\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n}\n:host[color]:not([overlay]),\n:host[color][overlay] {\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n\tstroke: rgb(var(--spinner-color));\n}\n:host[overlay]>svg {\n\tposition: absolute;\n\twidth: var(--spinner-size);\n\tleft: calc(50% - var(--spinner-size) / 2);\n\ttop: calc(50% - var(--spinner-size) / 2);\n}\n:host>svg {\n\tanimation: SPIN-SVG var(--spinner-time) linear infinite;\n}\n:host>svg>circle {\n\ttransform-origin: center;\n\tanimation: SPIN-CIRCLE var(--spinner-time) ease-in-out infinite;\n\tstroke-dasharray: 187;\n\tstroke-dashoffset: 0;\n}\n@keyframes SPIN-SVG {\n\t0% {\n\t\ttransform: rotate(0deg);\n\t}\n\t100% {\n\t\ttransform: rotate(270deg);\n\t}\n}\n@keyframes SPIN-CIRCLE {\n\t0% {\n\t\tstroke-dashoffset: 187;\n\t}\n\t50% {\n\t\tstroke-dashoffset: 46.75;\n\t\ttransform: rotate(135deg);\n\t}\n\t100% {\n\t\tstroke-dashoffset: 187;\n\t\ttransform: rotate(450deg);\n\t}\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-spinner\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySpinner {\n\t@Prop({ reflect: true }) size: \"small\" | \"icon\" | \"medium\" | \"large\" = \"large\"\n\t@Prop({ reflect: true }) overlay: boolean\n\n\trender() {\n\t\tconst strokeWidth = this.size == \"large\" ? 6 : this.size == \"medium\" ? 8 : this.size == \"icon\" ? 8 : 12\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--spinner-size\":\n\t\t\t\t\t\tthis.size == \"large\" ? \"5em\" : this.size == \"medium\" ? \"3em\" : this.size == \"icon\" ? \"1.8em\" : \"1.2em\",\n\t\t\t\t}}>\n\t\t\t\t<svg class=\"spinner\" viewBox={`0 0 ${60 + strokeWidth} ${60 + strokeWidth}`} xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<circle\n\t\t\t\t\t\tclass=\"path\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke-width={strokeWidth}\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tcx={`${30 + strokeWidth / 2}`}\n\t\t\t\t\t\tcy={`${30 + strokeWidth / 2}`}\n\t\t\t\t\t\tr=\"30\"></circle>\n\t\t\t\t</svg>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../button/style.css\";\n\n:host() {\n\tmargin: 1em 0em;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Button } from \"../Button\"\nimport { Submittable } from \"../input/Submittable\"\n\n@Component({\n\ttag: \"smoothly-submit\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlySubmit {\n\t@Prop({ reflect: true }) color?: Color = \"success\"\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop() prevent = true\n\tprivate parent?: Submittable\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Submittable.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t}\n\t\t})\n\t}\n\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.submit()\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Button disabled={this.disabled} type={this.type}>\n\t\t\t\t<slot />\n\t\t\t</Button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr;\n\tcolumn-gap: 0.3rem;\n}\n\n:host>details {\n\tdisplay: contents;\n}\n\n:host>details>summary {\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tgrid-column: 1/-1;\n\tlist-style: none;\n\talign-items: center;\n}\n\n:host>details>summary>smoothly-icon {\n\ttransition: transform 0.2s, opacity 0.1s;\n\topacity: 0.3;\n}\n\n:host:hover details>summary>smoothly-icon {\n\topacity: 1;\n}\n\n:host>details[open]>summary>smoothly-icon {\n\ttransform: rotate(90deg);\n}\n\n:host>details::slotted([slot=content]) {\n\tgrid-column: 2;\n}\n\n@media screen and (min-width: 900px) {\n\t:host>details>summary:hover {\n\t\tcursor: pointer;\n\t}\n}\n","import { Component, Event, EventEmitter, h, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\n@Component({\n\ttag: \"smoothly-summary\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySummary {\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Prop() color: Color\n\t@Prop() fill: Fill = \"solid\"\n\t@Prop() size: \"tiny\" | \"small\" | \"medium\" | \"large\" = \"tiny\"\n\t@Event() smoothlySummaryOpen: EventEmitter<boolean>\n\n\ttoggleHandler(event: Event) {\n\t\tif (event.target instanceof HTMLDetailsElement) {\n\t\t\tthis.open = event.target.open\n\t\t\tthis.smoothlySummaryOpen.emit(this.open)\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<details onToggle={e => this.toggleHandler(e)} open={this.open}>\n\t\t\t\t<summary>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward\" color={this.color} fill={this.fill} size={this.size}></smoothly-icon>\n\t\t\t\t\t<slot name=\"summary\"></slot>\n\t\t\t\t</summary>\n\t\t\t\t<slot name=\"content\"></slot>\n\t\t\t</details>\n\t\t)\n\t}\n}\n",":host([open]) {\n\tborder-bottom: 3px solid rgb(var(--smoothly-primary-color));\n\tbox-sizing: border-box;\n\tmargin-bottom: -3px;\n}\n:host > label {\n\tdisplay: block;\n\tpadding: .5rem;\n\tbackground-color: transparent;\n\twidth: auto;\n}\n:host > label:hover {\n\tcursor: pointer;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tab\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTab {\n\texpansionElement?: HTMLDivElement\n\t@Prop() label: string\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Event() expansionOpen: EventEmitter<HTMLDivElement>\n\t@Watch(\"open\")\n\topenHandler() {\n\t\tif (this.expansionElement && this.open) {\n\t\t\tthis.expansionOpen.emit(this.expansionElement)\n\t\t}\n\t}\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\te.stopPropagation()\n\t\tthis.open = true\n\t}\n\tcomponentDidLoad(): void {\n\t\tthis.openHandler()\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<label>{this.label}</label>\n\t\t\t\t<div ref={e => (this.expansionElement = e)} hidden={!this.open}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-around;\n\tborder-bottom: 3px solid rgb(var(--smoothly-default-shade));\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, State, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tab-switch\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTabSwitch {\n\t@Element() element: HTMLSmoothlyTabSwitchElement\n\t@State() selectedElement: HTMLSmoothlyTabElement\n\t@Event() selectedTab: EventEmitter<string>\n\t@Listen(\"expansionOpen\")\n\topenChanged(event: CustomEvent) {\n\t\tevent.stopPropagation()\n\t\tthis.selectedElement = event.target as HTMLSmoothlyTabElement\n\t\tthis.element.after(event.detail)\n\t\tthis.selectedTab.emit(this.selectedElement.label)\n\t}\n\t@Watch(\"selectedElement\")\n\tonSelectedChange(value: HTMLSmoothlyTabElement, old: HTMLSmoothlyTabElement) {\n\t\tif (old)\n\t\t\told.open = false\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table;\n\twidth: var(--table-width, 80%);\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--smoothly-default-color));\n}\n:host[root] {\n\tmargin-left: 1.5rem;\n\tmargin-right: 1.5rem;\n}\n:host:not([root]) {\n\tmargin: 0;\n\twidth: 100%;\n}\n","import { Component, ComponentWillLoad, Element, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-table\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Table implements ComponentWillLoad {\n\tprivate owner?: EventTarget\n\tprivate expandable: WeakMap<EventTarget, { allowSpotlight: (allowed: boolean) => void } | undefined> = new WeakMap()\n\tprivate expanded: Set<EventTarget> = new Set()\n\t@Element() element: HTMLSmoothlyTableElement\n\t@Prop({ mutable: true, reflect: true }) root = true\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true }) align: \"middle\" | \"bottom\" | \"top\" = \"middle\"\n\t@Prop({ reflect: true, mutable: true }) open = false\n\t@Event() smoothlyNestedTable: EventEmitter<() => void>\n\t@Event() smoothlySpotlightChange: EventEmitter<{ allowSpotlight: boolean; owner?: EventTarget }>\n\t@Event() smoothlyTableLoad: EventEmitter<(owner: EventTarget) => void>\n\tcomponentWillLoad() {\n\t\tthis.smoothlyNestedTable.emit(() => (this.root = false))\n\t\tthis.smoothlyTableLoad.emit((owner: EventTarget) => (this.owner = owner))\n\t}\n\t@Listen(\"smoothlyExpandableLoad\")\n\thandleExpandableLoaded(event: CustomEvent<{ allowSpotlight: (allowed: boolean) => void }>) {\n\t\tevent.stopPropagation()\n\t\tevent.target && this.expandable.set(event.target, event.detail)\n\t}\n\t@Listen(\"smoothlyExpandableChange\")\n\thandleExpandableState(event: CustomEvent<boolean>) {\n\t\tevent.stopPropagation()\n\t\tevent.target && (event.detail ? this.expanded.add(event.target) : this.expanded.delete(event.target))\n\t\tthis.smoothlySpotlightChange.emit({ allowSpotlight: !this.expanded.size, owner: this.owner })\n\t}\n\t@Listen(\"smoothlySpotlightChange\")\n\thandleSpotlightState(event: CustomEvent<{ allowSpotlight: boolean; owner?: EventTarget }>) {\n\t\tthis.open = !!this.expanded.size\n\t\tevent.target != this.element &&\n\t\t\t(event.stopPropagation(),\n\t\t\tevent.detail.owner && this.expandable.get(event.detail.owner)?.allowSpotlight(event.detail.allowSpotlight))\n\t}\n\t@Listen(\"smoothlyNestedTable\")\n\thandleNestedTable(event: CustomEvent<() => void>) {\n\t\tevent.target != this.element && (event.stopPropagation(), event.detail())\n\t}\n\t@Listen(\"smoothlyExpansionLoad\")\n\t@Listen(\"smoothlyExpansionOpen\")\n\thandleEvents(event: CustomEvent) {\n\t\tevent.stopPropagation()\n\t}\n\trender() {\n\t\treturn [<slot></slot>]\n\t}\n}\n",":host {\n\tdisplay: table-cell;\n\tline-height: 1.5rem;\n\twhite-space: nowrap;\n\tpadding: 0.3rem .5rem;\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade));\n}\n:host > div > smoothly-icon {\n\tdisplay: none;\n\twidth: 1em;\n\theight: auto;\n\taspect-ratio: 1 / 1;\n\tmargin: 0 0.3rem;\n\ttransition: transform 0.2s, opacity 0.1s;\n\topacity: 0.3;\n}\n:host:hover > div > smoothly-icon {\n\topacity: 1;\n}\nsmoothly-table-expandable-row > div :host:last-of-type > div > smoothly-icon {\n\tdisplay: flex;\n}\nsmoothly-table-expandable-row[open] > div > :host:last-of-type > div > smoothly-icon {\n\ttransform: rotate(90deg);\n}\n:host > div {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\talign-items: center;\n}\n:host > div > div {\n\twidth: 100%;\n}\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableCell {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</div>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward-outline\" size=\"tiny\" />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 3rem;\n\tpadding-bottom: 10rem;\n\tmargin-left: 2rem;\n\tmargin-right: 2rem;\n}\n\n.content {\n\tdisplay: contents;\n}\n\nsmoothly-lazy {\n\twidth: 80%;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h4>Demo table 1: Filtered & Checked Table</h4> <smoothly-lazy content={<smoothly-table-demo-filtered />} />\n\t\t\t\t<h4>Demo table 2</h4> <smoothly-table-testing></smoothly-table-testing> <h4>Demo table 3</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Header A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header B</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header C</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header D</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tnormal row (exp.cell)\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 1 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 2 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 3 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 4 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>normal row (nor.cell)\"</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell details.</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell details.</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>expandable row (nor.cell)</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">expandable row content</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 4</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Header A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tHeader expansion\n\t\t\t\t\t\t\t<div slot=\"detail\">Expansion content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>A Content</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Expansion cell</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-tab-switch>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"innertable 1\" open={true}>\n\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>Header B</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>B Content</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"innertable 2\">\n\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>Header C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>C Content</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t</smoothly-tab-switch>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>A Content</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tExpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">Expansion content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 5</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>B</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>nested expandable row</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>b row</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>E</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>F</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>e row</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>f row</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable row expansion e f</div>\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t<span>one</span>\n\t\t\t\t\t\t\t<span>two</span>\n\t\t\t\t\t\t\t<span>three</span>\n\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\tfive<smoothly-icon name=\"paper-plane-sharp\" size=\"small\"></smoothly-icon>\n\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">four</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t<span>nested expandable cells</span>\n\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>E</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>F</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\te cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>G</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>H</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tg cell\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion g</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\th cell\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion h</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\tf cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion f</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tb cell\n\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\tc cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion c</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\td cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion d</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 6</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>display</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>contents</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<div class={\"content\"}>\n\t\t\t\t\t\t\t<smoothly-table-cell>A</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>B</smoothly-table-cell>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div slot=\"detail\">expansion</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 7</h4> <span>nested 1 then normal</span>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>B</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>a</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>b</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>cccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>dddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">CONTENT</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ccccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>cccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>dddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">CONTENT</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 8</h4> <span>not nested</span>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>cc</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>dd</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>ccc</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 9</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>First name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Last name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header style={{ width: \"1px\" }}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"alert-outline\" />\n\t\t\t\t\t\t</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Jessie</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Doe</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell></smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<p>This is Jessie</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 9 - Lazy expansion rows</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Company</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Proquse</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\tcontent={<img src={\"https://brand.proquse.com/logo/proquse-black.svg\"} alt={\"Proquse Logotype.\"} />}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Pax2Pay</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\tcontent={() => (\n\t\t\t\t\t\t\t\t<img src={\"https://dash.pax2pay.app/assets/pax2pay-dark-horizontal.svg\"} alt={\"Pax2Pay Logotype.\"} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 10 - Lazy expansion cells</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Company</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tProquse\n\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\tcontent={<img src={\"https://brand.proquse.com/logo/proquse-black.svg\"} alt={\"Proquse Logotype.\"} />}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tPax2Pay\n\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\tcontent={() => (\n\t\t\t\t\t\t\t\t\t<img src={\"https://dash.pax2pay.app/assets/pax2pay-dark-horizontal.svg\"} alt={\"Pax2Pay Logotype.\"} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 11 - expandable cells</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Age</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Location</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tJessie\n\t\t\t\t\t\t\t<div slot={\"detail\"}>Doe</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t{new Date().getFullYear() - 2000}\n\t\t\t\t\t\t\t<div slot={\"detail\"}>2000-01-01</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tUK\n\t\t\t\t\t\t\t<div slot={\"detail\"}>London</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { h } from \"@stencil/core\"\n\nexport class Selector<T> {\n\t#selected?: T[]\n\tget selected(): T[] {\n\t\treturn (this.#selected ??= Object.values(this.data))\n\t}\n\tprivate constructor(private readonly key: keyof T, private data: Readonly<Record<string, T>> = {}) {}\n\thandle(data: Record<string, T>): Selector<T> {\n\t\treturn new Selector(\n\t\t\tthis.key,\n\t\t\t\"check-all\" in data\n\t\t\t\t? data[\"check-all\"] ?? {}\n\t\t\t\t: Object.fromEntries(Object.entries({ ...this.data, ...data }).filter(([_, value]) => value != undefined))\n\t\t)\n\t}\n\trender(item: T | T[]): HTMLSmoothlyCheckboxElement {\n\t\treturn Array.isArray(item) ? (\n\t\t\t<smoothly-checkbox\n\t\t\t\tname=\"check-all\"\n\t\t\t\tvalue={Object.fromEntries(item.map(i => [i[this.key], i]))}\n\t\t\t\tintermediate={this.selected.length > 0 && this.selected.length < item.length}\n\t\t\t\tchecked={this.selected.length == item.length ? true : this.selected.length == 0 && false}\n\t\t\t/>\n\t\t) : (\n\t\t\t<smoothly-checkbox\n\t\t\t\tname={item[this.key]?.toString()}\n\t\t\t\tvalue={item}\n\t\t\t\tchecked={!!this.data[item[this.key]?.toString() ?? \"\"]}\n\t\t\t/>\n\t\t)\n\t}\n\tstatic create<T>(key: keyof T): Selector<T> {\n\t\treturn new Selector(key)\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 80%;\n}\n\nsmoothly-table-cell:nth-of-type(2) {\n\ttext-align: right;\n}\n\ntd {\n\tpadding-left: 1.5em;\n}\n","import { Component, ComponentWillLoad, h, Host, Listen, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { http } from \"cloudly-http\"\nimport { Selector } from \"../../Selector\"\nimport { Cat } from \"./Root\"\n\n@Component({\n\ttag: \"smoothly-table-demo-filtered\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableDemoFiltered implements ComponentWillLoad {\n\t@State() criteria: selectively.Criteria = {}\n\t@State() cats?: Cat[] | false\n\t@State() selector: Selector<Cat> = Selector.create(\"breed\")\n\t@Listen(\"smoothlyFilter\")\n\tonFilterUpdate(event: CustomEvent<selectively.Criteria>) {\n\t\tevent.stopPropagation()\n\t\tthis.criteria = event.detail\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tevent.stopPropagation()\n\t\tthis.selector = this.selector.handle(event.detail)\n\t}\n\n\tasync componentWillLoad(): Promise<void> {\n\t\tconst response = await http.fetch(\"https://catfact.ninja/breeds?limit=15\")\n\t\tthis.cats =\n\t\t\tresponse.status == 200 &&\n\t\t\t(await response.body).data.map((cat: any) => ({\n\t\t\t\t...cat,\n\t\t\t\tprice: [...cat.breed].reduce((r, c) => r + c.charCodeAt(0), 0),\n\t\t\t\tnested: { ...cat, names: names[cat.country] ?? [] },\n\t\t\t\tnames: names[cat.country] ?? [],\n\t\t\t}))\n\t}\n\n\trender() {\n\t\tconst cats = this.cats && selectively.filter(this.criteria, this.cats)\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-filter>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ [\"nested.pattern\"]: \"Ticked\", breed: \"\" }}\n\t\t\t\t\t\ticon=\"add\"\n\t\t\t\t\t\ttoolTip=\"Nested Ticked\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ pattern: \"Ticked\", breed: \"\" }}\n\t\t\t\t\t\ticon=\"paw\"\n\t\t\t\t\t\ttoolTip=\"Ticked cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ breed: \"Bombay\", pattern: \"Solid\" }}\n\t\t\t\t\t\ticon=\"radio-button-on\"\n\t\t\t\t\t\ttoolTip=\"Solid bombay cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ pattern: \"Colorpoint\" }}\n\t\t\t\t\t\tnot\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon=\"alert\"\n\t\t\t\t\t\ttoolTip=\"Colored cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-picker label=\"coat\" property=\"nested.coat\" slot=\"bar\" multiple={false}>\n\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\tthis.cats.map(\n\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\tcat.nested?.coat && (\n\t\t\t\t\t\t\t\t\t\t<smoothly-picker-option value={cat.nested.coat}>{cat.nested.coat}</smoothly-picker-option>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t</smoothly-filter-picker>\n\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t\t\t<smoothly-filter-picker label=\"coat\" property=\"nested.coat\" multiple>\n\t\t\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\t\t\tthis.cats.map(\n\t\t\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\t\t\tcat.nested?.coat && (\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-picker-option value={cat.nested.coat}>{cat.nested.coat}</smoothly-picker-option>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-picker>\n\t\t\t\t\t\t\t<smoothly-filter-picker label=\"breed\" property=\"breed\" multiple={false}>\n\t\t\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\t\t\tthis.cats.map(\n\t\t\t\t\t\t\t\t\t\tcat => cat.breed && <smoothly-picker-option value={cat.breed}>{cat.breed}</smoothly-picker-option>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-picker>\n\t\t\t\t\t\t\t<smoothly-filter-picker label=\"names\" property=\"nested.names\" multiple={true} type=\"array\">\n\t\t\t\t\t\t\t\t{Object.values(names).flatMap(names =>\n\t\t\t\t\t\t\t\t\tnames.map(name => <smoothly-picker-option value={name}>{name}</smoothly-picker-option>)\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-picker>\n\n\t\t\t\t\t\t\t<smoothly-filter-input property=\"coat\" placeholder=\"ex. Short\" />\n\t\t\t\t\t\t\t<smoothly-filter-input property=\"nested.coat\" placeholder=\"ex. Rex\" />\n\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-filter>\n\t\t\t\t{!cats ? (\n\t\t\t\t\t\"Failed to load data.\"\n\t\t\t\t) : (\n\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-header>{this.selector.render(cats)}</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Breed</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Coat</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Price</smoothly-table-header>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t{cats.map(cat => (\n\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-cell>{this.selector.render(cat)}</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.breed}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Country: {cat.country}</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.coat}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Pattern: {cat.pattern}</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type=\"price\" value={cat.price} currency=\"SEK\"></smoothly-display>\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-table-footer>\n\t\t\t\t\t\t\t<td colSpan={5}>\n\t\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tvalue={`Selected: ${\n\t\t\t\t\t\t\t\t\t\tthis.selector.selected.length != 0 ? this.selector.selected.length : cats ? cats.length : \"?\"\n\t\t\t\t\t\t\t\t\t}`}></smoothly-display>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</smoothly-table-footer>\n\t\t\t\t\t</smoothly-table>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\nconst names: Record<string, string[]> = {\n\t\"United States\": [\"bill\", \"bob\", \"brad\", \"joe\", \"molly\"],\n\tAustralia: [\"nigel\", \"bruce\", \"sheila\", \"brad\", \"shane\"],\n\t\"United Kingdom\": [\"nigel\", \"james\", \"molly\", \"shane\", \"bob\"],\n\tGreece: [\"dionysius\", \"demetrius\", \"polikarpos\"],\n}\n",":host {\n\tdisplay: table-cell;\n\tpadding: 0.3rem 0.5rem 0.3rem 0.2rem;\n\tcursor: pointer;\n\tline-height: 1.5rem;\n}\n:host:not([open]) {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)), 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] {\n\tposition: relative;\n\tz-index: 3;\n\tbackground-color: rgb(var(--smoothly-color));\n\tbox-shadow: 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host > div > smoothly-icon {\n\twidth: 1em;\n\tpadding-right: 0.3rem;\n\ttransition: transform 0.2s, opacity 0.1s;\n\tdisplay: flex;\n\theight: auto;\n\taspect-ratio: 1 / 1;\n\talign-self: center;\n\topacity: 0.3;\n}\n:host:hover > div > smoothly-icon {\n\topacity: 1;\n}\n:host[open] > div > smoothly-icon {\n\ttransform: rotate(90deg) translateX(3px);\n}\n:host > div {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr;\n\talign-items: center;\n}\n:host:not([open]) > tr > td {\n\tdisplay: none;\n}\nsmoothly-table-row > tr > td::slotted(*) {\n\t--expansion-width: 1.5rem;\n\t--expansion-border-width: 3px;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-color));\n\twidth: calc(100% + 3rem - 1px);\n\ttop: 1px;\n\tleft: calc(-1 * var(--expansion-width) + 1px);\n\tbox-sizing: border-box;\n\tpadding: 0.5rem calc(var(--expansion-width) - 1px);\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n}\nsmoothly-table-row > tr.spotlight > td::slotted(*) {\n\tbox-shadow: calc(var(--expansion-border-width)) 0 0 0 rgb(var(--smoothly-tertiary-color)) inset;\n}\nsmoothly-table-row > tr:not(.spotlight) > td::slotted(*) {\n\tbox-shadow: -1px 0 0 0 rgb(var(--smoothly-tertiary-color)), 1px 0 0 0 rgb(var(--smoothly-tertiary-color));\n}\nsmoothly-table-row > tr > td::slotted(*)::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: -1px;\n\tbottom: 0;\n\tleft: -1px;\n\twidth: calc(var(--expansion-width) + 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n}\nsmoothly-table-row > tr > td::slotted(*)::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: -1px;\n\tbottom: 0;\n\tright: 0;\n\twidth: calc(var(--expansion-width) - 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tborder-right: 1px solid rgb(var(--smoothly-color-shade));\n}\n\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-expandable-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableExpandableCell implements ComponentWillLoad {\n\tprivate expansionElement?: HTMLTableRowElement\n\tprivate beginOpen: boolean\n\t@Element() element: HTMLSmoothlyTableExpandableCellElement\n\t@State() allowSpotlight = true\n\t@State() spotlight = true\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Event() smoothlyExpansionOpen: EventEmitter<HTMLElement>\n\t@Event() smoothlyExpansionLoad: EventEmitter<void>\n\t@Event() smoothlyExpandableChange: EventEmitter<boolean>\n\t@Event() smoothlyExpandableLoad: EventEmitter<{ allowSpotlight: (allowed: boolean) => void }>\n\t@Watch(\"open\")\n\topenChanged(value: boolean) {\n\t\tif (this.expansionElement)\n\t\t\tif (value)\n\t\t\t\tthis.beginOpen = true\n\t\t\telse\n\t\t\t\tthis.element.append(this.expansionElement)\n\t\tthis.smoothlyExpandableChange.emit(this.open)\n\t}\n\t@Watch(\"open\")\n\t@Watch(\"allowSpotlight\")\n\thandleSpotlight() {\n\t\tthis.spotlight = this.open && this.allowSpotlight\n\t}\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyExpansionLoad.emit()\n\t\tthis.smoothlyExpandableLoad.emit({\n\t\t\tallowSpotlight: (allowed: boolean) => (this.allowSpotlight = allowed),\n\t\t})\n\t}\n\tcomponentDidRender(): void {\n\t\tif (this.beginOpen) {\n\t\t\tthis.beginOpen = false\n\t\t\tthis.smoothlyExpansionOpen.emit(this.expansionElement)\n\t\t}\n\t}\n\t@Listen(\"click\")\n\tonClick() {\n\t\tthis.open = !this.open\n\t}\n\t@Listen(\"smoothlyTableLoad\")\n\thandleTableLoaded(event: CustomEvent<(owner: EventTarget) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.element)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward-outline\"></smoothly-icon>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<tr class={{ spotlight: this.spotlight }} ref={e => (this.expansionElement = e)}>\n\t\t\t\t\t<td colSpan={999}>\n\t\t\t\t\t\t<slot name=\"detail\"></slot>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n:host > div {\n\tdisplay: table-row;\n\tcursor: pointer;\n\tline-height: 1.5rem;\n}\n:host[open] > div {\n\tposition: relative;\n\tz-index: 3;\n\tbackground-color: rgb(var(--smoothly-color));\n}\n:host[open] > div::slotted(*) smoothly-table-cell,\n:host[open] > div::slotted(smoothly-table-cell) {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\t\n}\n:host[open] > div::slotted(*) smoothly-table-cell:first-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] > div::slotted(*) smoothly-table-cell:last-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] > div::slotted(*) smoothly-table-cell:last-child:first-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n\n:host:not([open]) > tr > td {\n\tdisplay: none;\n}\n:host > tr > td {\n\tposition: relative;\n}\n:host > tr > td::slotted(*) {\n\t--expansion-width: 1.5rem;\n\t--expansion-border-width: 3px;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-color));\n\twidth: calc(100% + 3rem - 2px);\n\tleft: calc(-1 * var(--expansion-width) + 1px);\n\tbox-sizing: border-box;\n\tpadding: 0.5rem calc(var(--expansion-width) - 1px);\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n}\n:host > tr.spotlight > td::slotted(*) {\n\tbox-shadow: calc(var(--expansion-border-width)) 0px 0px 0px rgb(var(--smoothly-tertiary-color)) inset;\n}\n:host > tr:not(.spotlight) > td::slotted(*) {\n\tbox-shadow: -1px 0 0 0 rgb(var(--smoothly-tertiary-color)), 1px 0 0 0 rgb(var(--smoothly-tertiary-color));\n}\n:host > tr > td::slotted(*)::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tleft: -1px;\n\twidth: calc(var(--expansion-width) + 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n}\n:host > tr > td::slotted(*)::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tright: 0;\n\twidth: calc(var(--expansion-width) - 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tborder-right: 1px solid rgb(var(--smoothly-color-shade));\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-expandable-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableExpandableRow implements ComponentWillLoad {\n\t@Element() element: HTMLSmoothlyTableRowElement\n\t@State() allowSpotlight = true\n\t@State() spotlight = true\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Event() smoothlyExpansionOpen: EventEmitter<HTMLElement>\n\t@Event() smoothlyExpandableChange: EventEmitter<boolean>\n\t@Event() smoothlyExpandableLoad: EventEmitter<{ allowSpotlight: (allowed: boolean) => void }>\n\n\t@Watch(\"open\")\n\t@Watch(\"allowSpotlight\")\n\thandleSpotlight() {\n\t\tthis.spotlight = this.open && this.allowSpotlight\n\t}\n\tcomponentWillLoad() {\n\t\tthis.smoothlyExpandableLoad.emit({\n\t\t\tallowSpotlight: (allowed: boolean) => (this.allowSpotlight = allowed),\n\t\t})\n\t}\n\t@Listen(\"smoothlyTableLoad\")\n\thandleTableLoaded(event: CustomEvent<(owner: EventTarget) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.element)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div onClick={() => (this.open = !this.open)}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<tr class={{ spotlight: this.spotlight }}>\n\t\t\t\t\t<td colSpan={999}>\n\t\t\t\t\t\t<slot name=\"detail\"></slot>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table-footer-group;\n\tposition: sticky;\n\tbottom: 0;\n\tbackground-color: rgb(var(--smoothly-color));\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)),\n\t\tinset 0 1px 0 rgb(var(--smoothly-color-shade));\n\tline-height: 2.5rem;\n\tfont-weight: bold;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-footer\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableFooter {\n\trender() {\n\t\treturn <slot />\n\t}\n}\n",":host {\n\tdisplay: table-cell;\n\tline-height: 2.5rem;\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade));\n\tpadding: 0 .5rem;\n\tfont-weight: bold;\n}\n\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-header\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableHeader {\n\t@Prop() name: string\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table-row-group;\n\tcursor: default;\n\tline-height: 1.5rem;\n}\n.hide {\n\tdisplay: none;\n}\n:host > div {\n\tdisplay: contents;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableRow {\n\tprivate element?: HTMLElement\n\t@Prop({ reflect: true, mutable: true }) open = false\n\texpansions: HTMLSmoothlyTableExpandableCellElement[] = []\n\t@Listen(\"smoothlyExpansionLoad\")\n\tonExpansionLoad(event: CustomEvent<void>) {\n\t\tthis.expansions.push(event.target as HTMLSmoothlyTableExpandableCellElement)\n\t}\n\t@Listen(\"smoothlyExpandableChange\")\n\tonExpansionChange() {\n\t\tthis.open = this.expansions.some(expansion => expansion.open)\n\t}\n\t@Listen(\"smoothlyExpansionOpen\")\n\tonExpansionOpen(event: CustomEvent<HTMLElement | undefined>) {\n\t\tthis.expansions.forEach(cell => {\n\t\t\tif (cell != event.target)\n\t\t\t\tcell.open = false\n\t\t})\n\t\tif (event.detail)\n\t\t\tthis.element?.after(event.detail)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<div ref={e => (this.element = e)}>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","export const data = [\n\t{\n\t\ttype: \"cat\",\n\t\tname: \"Lazie\",\n\t\tage: 3,\n\t},\n\t{\n\t\ttype: \"dog\",\n\t\tname: \"Jessie\",\n\t\tage: 8,\n\t},\n\t{\n\t\ttype: \"cat\",\n\t\tname: \"Snooz\",\n\t\tage: 5,\n\t},\n\t{\n\t\ttype: \"bird\",\n\t\tname: \"Squeak\",\n\t\tage: 1,\n\t},\n\t{\n\t\ttype: \"bird\",\n\t\tname: \"Quirk\",\n\t\tage: 2,\n\t},\n]\n",":host {\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n}\n\nsmoothly-table {\n\twidth: 80%;\n}\n\n.tableCell {\n\theight: 3rem;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.tableCell>div {\n\tmargin-left: 3rem;\n\tmargin-right: 3rem;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: 2rem;\n}\n\ntd>div.footer {\n\tdisplay: flex;\n\tpadding-left: 1.5em;\n\tflex-direction: row;\n\tgap: 1em;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\nimport { data } from \"./data\"\n@Component({\n\ttag: \"smoothly-table-testing\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableTesting {\n\t@State() counter = 0\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-table color=\"dark\">\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Type</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Age</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\n\t\t\t\t\t{data.map(animal => (\n\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.type}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.name}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.age}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t<smoothly-input value={animal.type}>Type</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-input>{animal.age}</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t))}\n\t\t\t\t\t{data.map(animal => (\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.type}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t{animal.name}\n\t\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t{animal.age}\n\t\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.type}>Type</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-input>{animal.age}</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t))}\n\t\t\t\t\t<smoothly-table-footer>\n\t\t\t\t\t\t<td colSpan={2}>\n\t\t\t\t\t\t\t<div class=\"footer\">\n\t\t\t\t\t\t\t\tCurrently viewing content from:\n\t\t\t\t\t\t\t\t<smoothly-display type=\"date\" value=\"2023-10-12\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<smoothly-table-header>{\"Total age: \" + data.reduce((r, a) => r + a.age, 0)}</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-footer>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n:host > :first-child {\n\tmargin-top: 0.2rem;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\nimport { Color } from \"../../../model\"\n\n@Component({\n\ttag: \"smoothly-theme-color\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColor {\n\t@Prop() color: Color\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t{this.color}\n\t\t\t\t{([\"tint\", \"color\", \"shade\"] as const).map(variant => (\n\t\t\t\t\t<smoothly-theme-color-variant color={this.color} variant={variant}></smoothly-theme-color-variant>\n\t\t\t\t))}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 3em;\n\theight: 3em;\n\tfont-weight: 900;\n}\n\n:host[color][variant=color] {\n\tbackground: rgb(var(--smoothly-color));\n}\n:host[color][variant=tint] {\n\tbackground: rgb(var(--smoothly-color-tint));\n}\n:host[color][variant=shade] {\n\tbackground: rgb(var(--smoothly-color-shade));\n}\n","import { Component, Prop } from \"@stencil/core\"\nimport { Color } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-theme-color-variant\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColorVariant {\n\t@Prop({ reflect: true }) color: Color\n\t@Prop({ reflect: true }) variant: \"shade\" | \"tint\" | \"color\" = \"color\"\n\trender() {\n\t\treturn \"Aa\"\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, 1fr);\n\trow-gap: 1em;\n\tcolumn-gap: 1em;\n\twidth: fit-content;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-colors\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColors {\n\trender() {\n\t\treturn (\n\t\t\t[\n\t\t\t\t\"primary\",\n\t\t\t\t\"secondary\",\n\t\t\t\t\"tertiary\",\n\t\t\t\t\"success\",\n\t\t\t\t\"warning\",\n\t\t\t\t\"danger\",\n\t\t\t\t\"light\",\n\t\t\t\t\"medium\",\n\t\t\t\t\"dark\",\n\t\t\t\t\"default\",\n\t\t\t] as const\n\t\t).map(color => <smoothly-theme-color color={color}></smoothly-theme-color>)\n\t}\n}\n",null,"import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-picker\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemePicker {\n\t@Prop() element = \"smoothly-css\"\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tname=\"theme\"\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\tconst element = document.querySelector(`#${this.element}`)\n\t\t\t\t\t\tif (element instanceof HTMLLinkElement && typeof e.detail.theme == \"string\")\n\t\t\t\t\t\t\telement.href = e.detail.theme\n\t\t\t\t\t}}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</smoothly-input-select>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host{\n\tdisplay: inline-block;\n\tborder: none;\n}\n:host > button {\n\tborder: solid white 0.5px;\n\tdisplay: flex;\n\tpadding: 0.6em;\n\tjustify-content: center;\n\tfont-size: 110%;\n\tfont-weight: 400;\n\tcolor: rgb(var(--smoothly-default-tint));\n\tbackground-color: rgb(var(--smoothly-default-shade));\n}\n:host([shape=rounded]) {\n\tborder-radius: 0.6em;\n}\n:host([shape=rounded]) > button {\n\tborder-radius: 0.5em;\n}\n:host([selected]) > button {\n\tcolor: rgb(var(--smoothly-light-contrast));\n}\n::slotted(smoothly-icon) {\n\tstroke: rgb(var(--smoothly-default-contrast));\n\tfill: rgb(var(--smoothly-default-contrast));\n\tfont-size: 110%;\n}\n:host(:not([selected])) > ::slotted(smoothly-icon) {\n\tcolor: rgb(var(--smoothly-default-tint));\n\tfill:rgb(var(--smoothly-default-tint));\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-toggle\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyToggle {\n\t@Prop({ mutable: true, reflect: true }) selected = false\n\t@Prop({ reflect: true }) shape: \"rounded\"\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop() name: string\n\t@Prop() value?: any\n\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\tthis.selected = !this.selected\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<button>\n\t\t\t\t<slot name=\"icon-slot\"></slot>\n\t\t\t\t<slot>{this.name}</slot>\n\t\t\t</button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tmargin: 1em 0;\n\twidth: 3.6em;\n\theight: 1.8em;\n}\n\n:host > button {\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tposition: relative;\n\tcursor: pointer;\n\tborder: none;\n\tborder-radius: 3em;\n\tbackground-color: rgb(var(--smoothly-light-tint));\n}\n:host > button:hover {\n\tbackground-color: rgb(var(--smoothly-light-color));\n}\n:host > button > smoothly-icon {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\talign-items: center;\n\tposition: absolute;\n\tleft: 0;\n\tfill: rgb(var(--smoothly-color));\n\tstroke: rgb(var(--smoothly-color));\n\tfont-size: 1.2em;\n\ttransition: 100ms ease-in-out;\n}\n\n:host[checkmark] > button > smoothly-icon {\n\tfill: rgb(var(--smoothly-success-color));\n\tstroke: rgb(var(--smoothly-success-color));\n}\n:host([selected][checkmark]) > button {\n\tbackground-color: rgb(var(--smoothly-success-color));\n}\n\n:host([selected]) > button > smoothly-icon {\n\ttransform: translateX(100%);\n}\n\n:host([size=small]) {\n\twidth: 3.05em;\n\theight: 1.5em;\n}\n\n:host([size=large]) {\n\twidth: 5.2em;\n\theight: 2.5em;\n}\n\n:host([size=small]) > button > smoothly-icon {\n\tfont-size: 1em;\n}\n\n:host([size=large]) > button > smoothly-icon {\n\tfont-size: 1.75em;\n}\n","import { Component, Event, EventEmitter, h, Host, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-toggle-switch\",\n\tstyleUrl: \"style.css\",\n\tshadow: true,\n})\nexport class SmoothlyToggleSwitch {\n\t@Prop({ reflect: true }) checkmark = true\n\t@Prop({ mutable: true, reflect: true }) selected = false\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"small\" | \"default\" | \"large\" = \"default\"\n\t@Prop({ reflect: true }) color: Color\n\t@Prop({ reflect: true }) fill: Fill = \"clear\"\n\t@Event() smoothlyToggleSwitchChange: EventEmitter<boolean>\n\n\thandleClick() {\n\t\tthis.selected = !this.selected\n\t\tthis.smoothlyToggleSwitchChange.emit(this.selected)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<button disabled={this.disabled} onClick={() => this.handleClick()}>\n\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tname={!this.checkmark ? \"ellipse\" : this.selected ? \"checkmark-circle\" : \"close-circle\"}\n\t\t\t\t\t\tfill=\"clear\"\n\t\t\t\t\t\tclass={{ selected: this.selected }}></smoothly-icon>\n\t\t\t\t</button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tborder-radius: 3px;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host[disabled] {\n\topacity: 0.5;\n}\n:host > button {\n\tborder-color: transparent;\n\tbackground-color: transparent;\n\tpadding: 0.2em 0.3em;\n\tfont-size: 110%;\n\tfont-weight: 400;\n}\n:host:not([disabled]):hover,\n:host:not([disabled]):focus,\n:host:not([disabled]):active {\n\tborder-color: var(--smoothly-trigger-border);\n}\n:host[expand=full] > button,\n:host[expand=block] > button {\n\twidth: 100%;\n}\n:host[expand=full] {\n\tborder-left: none;\n\tborder-right: none;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-trigger\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTrigger {\n\t@Prop({ reflect: true }) color: Color | undefined\n\t@Prop({ reflect: true }) fill: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop() name: string\n\t@Prop() value?: any\n\t@Event() trigger: EventEmitter<Trigger>\n\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\tthis.trigger.emit({ name: this.name, value: this.value })\n\t\te.stopPropagation()\n\t\te.preventDefault()\n\t}\n\trender() {\n\t\tlet result: HTMLElement\n\t\tswitch (this.type) {\n\t\t\tcase \"link\":\n\t\t\t\tresult = this.disabled ? (\n\t\t\t\t\t<slot></slot>\n\t\t\t\t) : (\n\t\t\t\t\t<a onClick={e => this.onClick(e)}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</a>\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t\tcase \"button\":\n\t\t\t\tresult = (\n\t\t\t\t\t<button disabled={this.disabled} name={this.name}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</button>\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n}\n","import { Component, h, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tuple\",\n})\nexport class SmoothlyTuple {\n\t@Prop() tuple: [string, string]\n\trender() {\n\t\treturn [<b>{this.tuple[0]}</b>, \": \", this.tuple[1], <br />]\n\t}\n}\n","import { Component, h, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-urlencoded\",\n})\nexport class Urlencoded {\n\t@Prop() data: string // TODO: Consider using a specific type for this\n\trender() {\n\t\treturn this.data\n\t\t\t.split(\"&\")\n\t\t\t.map(p => p.split(\"=\") as [string, string])\n\t\t\t.map(tuple => <smoothly-tuple tuple={tuple}></smoothly-tuple>)\n\t}\n}\n"],"mappings":"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MAAM6L,SAAS,IAC3F,EAEAnD,GAAI,WAAW,IAAM,IAAImV,KCxBlB,MAAM0E,GAAc,CACvB,CACIC,YAAa,MACbC,UAAW,CACP,MACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,M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ANA,SAAM,SAANA,EAAQ0B,QAAQ,kBAAmB,YAAYlJ,KAAK0E,qBAC9D1E,KAAKksC,eAAe1kC,E,OAGrBxH,KAAKksC,gB,CAEP,cAAAA,CAAe94B,GACdpT,KAAKoT,SACJA,IAAQ,MAARA,SAAQ,EAARA,EACA,sG,CAKF,MAAAxP,G,MACC,OAAOC,EAACkP,EAAI,CAAAjP,IAAA,2CAAC/B,UAAW/B,KAAKoT,SAAUvO,MAAO,CAAE,CAAC,cAAe,IAAG9D,EAAAf,KAAKmsC,UAAM,MAAAprC,SAAA,EAAAA,EAAI,S,kECrDpF,MAAMT,GAAW,mQACjB,MAAA8rC,GAAe9rC,G,MCMF+rC,GAAgB,MAL7B,WAAAxsC,CAAAysC,G,UAMCtsC,KAAAusC,KAAO,C,CACP,MAAA3oC,GACC,MAAO,CACNC,EAAA,MAAAC,IAAA,qDACAD,EAAA,OAAAC,IAAA,4CACE,CACA,aACA,MACA,WACA,QACA,SACA,eACA,QACA,oBACA,YACA,WACA,OACA,UACA,oBACA,aACA,oBACA,aACA,uBACA,gBACA,oBACA,aACA,oBACA,aACA,kBACA,WACA,YACA,KACA,SACA,YACA,UACA,UACA,YACA,UACA,WACA,aACA,SACA,mBACA,eACA,eACA,eACA,SACA,MACA,OACA,UACA,YACA,OACA,OACA,UACA,YACA,WACA,OACA,YACA,WACA,QACA,MACA,QACA,OACA,WACA,MACA,OACA,aACA,WACA,OACA,iBACA,SACA,OACA,oBACA,aACA,oBACA,aACA,uBACA,gBACA,kBACA,WACA,YACA,MACA,OACA,OACA,WACA,mBACA,UACA,sBACA,cACA,aACA,WACA,mBACA,wBACA,iBACA,YACA,sBACA,eACA,sBACA,eACA,yBACA,kBACA,oBACA,aACA,YACA,eACA,QACA,eACA,aACA,iBACA,gBACA,QACA,eACA,eACA,SACA,gBACA,aACA,OACA,eACA,MACA,aACA,eACA,gBACA,aACA,UACA,YACA,WACA,WACA,OACA,SACA,OACA,OACA,MACA,UACA,OACA,kBACA,YACA,WACA,gBACA,WACA,YACA,MACA,QACA,QACA,MACA,UACA,6BACA,sBACA,2BACA,oBACA,QACA,OACA,SACA,UACA,UACA,MACA,YACA,SACA,iBACA,oBACA,YACA,OACA,SACA,eACA,UACA,OACA,QACA,aACA,YACA,QACA,QACA,SACA,cACA,SACA,WACA,SACA,kBACA,OACA,aACA,aACA,cACA,YACA,cACA,mBACA,UACA,QACA,OACA,OACA,SACA,YACA,aACA,QACA,gBACA,UACA,eACA,uBACA,gBACA,aACA,QACA,YACA,cACA,OACA,OACA,YACA,YACA,SACA,QACA,WACA,qBACA,cACA,UACA,SACA,MACA,WACA,SACA,SACA,OACA,UACA,OACA,cACA,OACA,SACA,WACA,cACA,YACA,SACA,cACA,eACA,eACA,eACA,sBACA,aACA,eACA,iBACA,eACA,cACA,iBACA,cACA,yBACA,eACA,YACA,oBACA,cACA,gBACA,eACA,YACA,gBACA,YACA,gBACA,gBACA,eACA,cACA,kBACA,cACA,cACA,wBACA,cACA,kBACA,aACA,iBACA,aACA,gBACA,kBACA,eACA,gBACA,gBACA,cACA,cACA,kBACA,WACA,eACA,cACA,iBACA,mBACA,WACA,cACA,aACA,cACA,WACA,YACA,aACA,aACA,gBACA,kBACA,qBACA,aACA,eACA,cACA,cACA,WACA,cACA,eACA,WACA,UACA,qBACA,aACA,gBACA,aACA,eACA,UACA,iBACA,WACA,YACA,YACA,aACA,WACA,eACA,SACA,YACA,OACA,cACA,cACA,OACA,MACA,MACA,QACA,UACA,SACA,YACA,OACA,aACA,iBACA,UACA,MACA,OACA,OACA,gBACA,eACA,kBACA,WACA,YACA,uBACA,2BACA,oBACA,gBACA,UACA,YACA,OACA,UACA,cACA,eACA,eACA,QACA,MACA,SACA,gBACA,SACA,aACA,gBACA,gBACA,SACA,kBACA,iBACA,YACA,MACA,OACA,QACA,SACA,mBACA,YACA,cACA,sBACA,eACA,wBACA,iBACA,2BACA,oBACA,OACA,SACA,QACA,YACA,WACA,QACA,QACA,OACA,UACA,mBACA,kBACA,QACA,QACA,SACA,UACA,YACA,iBACA,UACA,gBACA,SACA,gBACA,SACA,eACA,gBACA,cACA,SACA,SACA,aACA,mBACA,sBACA,iBACA,oBACA,SACA,SACA,OACA,MACA,OACA,cACA,OACA,SACA,gBACA,SACA,OACA,SACA,WACA,SACA,eACA,QACA,mBACA,SACA,QACA,UACA,QACA,OACA,cACA,SACA,YACA,OACA,cACA,cACA,OACA,YACA,SACA,QACA,kBACA,gBACA,cACA,OACA,mBACA,kBACA,aACA,WACA,OACA,cACA,cACA,YACA,eACA,QACA,OACA,QACA,SACA,aACA,QACA,cACA,YACA,QACA,gBACA,cACA,WACA,SACA,KACA,WACA,OACA,SACA,UACA,QACA,QACA,WACA,OACA,OACA,cACA,aACA,gBACA,cACA,aACA,SAECuX,MAAMrb,KAAKusC,KAAO,IAAK,KACvB3zB,KAAIvY,GACJwD,EAAA,iBAAexD,KAAMA,EAAcqE,QAASrE,OAG/CwD,EAAA,MAAAC,IAAA,+DACAD,EAAA,OAAAC,IAAA,4CACCD,EAAA,iBAAAC,IAAA,2CAAezD,KAAM,UAAWqE,QAAS,WACzCb,EAAA,iBAAAC,IAAA,2CAAezD,KAAM,UAAWqE,QAAS,uBAAwB8nC,KAAK,MACtE3oC,EAAA,iBAAAC,IAAA,2CAAezD,KAAM,UAAWqE,QAAS,qBAAsB8nC,KAAK,MACpE3oC,EAAA,iBAAAC,IAAA,2CAAezD,KAAM,UAAWqE,QAAS,iBAAkBynC,OAAQ,MACnEtoC,EAAA,iBAAAC,IAAA,2CAAezD,KAAM,OAAQqE,QAAS,gBAAiBynC,OAAQ,KAC/DtoC,EAAA,iBAAAC,IAAA,2CAAezD,KAAM,OAAQqE,QAAS,iBAAkBynC,OAAQ,MAChEtoC,EAAA,iBAAAC,IAAA,2CAAezD,KAAM,OAAQqE,QAAS,iBAAkBynC,QAAS,KACjEtoC,EAAA,iBAAAC,IAAA,2CACCzD,KAAM,gBACNqE,QAAS,yCACTynC,OAAQ,GACRK,KAAK,O,eClfV,MAAMlsC,GAAW,8l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","ignoreList":[]}
|