{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/forms/Checkbox.tsx","webpack:///./src/infrastructure/sizing.ts","webpack:///./src/components/ActionIcon.tsx","webpack:///./src/components/ActionBar.tsx","webpack:///./src/components/misc.ts","webpack:///./src/components/AlertBar.tsx","webpack:///./src/components/forms/TryOut.tsx","webpack:///./src/components/BusyIndicator.tsx","webpack:///./src/components/Dialog.tsx","webpack:///./src/components/ConfirmationDialog.tsx","webpack:///./src/views/about.tsx","webpack:///./src/components/HelloWorld.tsx","webpack:///./src/components/Counter.tsx","webpack:///./src/views/home.tsx","webpack:///./src/infrastructure/validation.ts","webpack:///./src/components/StateViewer.tsx","webpack:///./src/infrastructure/utils.ts","webpack:///./src/views/TestPage.tsx","webpack:///./src/components/Draggable.tsx","webpack:///./src/components/SortableList.tsx","webpack:///./src/components/InlineEdit.tsx","webpack:///./src/views/Dragging.tsx","webpack:///./src/router/index.ts","webpack:///./src/app.tsx","webpack:///./src/main.ts","webpack:///./src/assets/logo.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","Checkbox","props","type","Boolean","default","onChange","Function","text","String","ellipse","transparent","enabled","setup","args","target","checked","watcherMap","WeakMap","resizeObserver","ResizeObserver","entries","entry","element","callback","contentRect","width","height","register","set","observe","unregister","delete","unobserve","useResizeObserver","size","contentWidth","contentHeight","onResize","newSize","onInvalidate","setElement","ActionIcon","kind","required","ActionBarSymbol","actionBar","useActionBar","actions","add","action","remove","index","indexOf","copy","ActionBar","Array","slots","map","x","SomeBar","items","itemSizes","mutatedItems","remainingAvailableWidth","getComputedStyle","paddingLeft","paddingRight","parseFloat","sizesMap","itemSize","isResponsive","ol","onSize","filter","RegularItem","title","icon","onSizeChanged","AlertKind","UnreachableValueError","JSON","stringify","Error","useAlertbar","alerts","show","content","timeout","id","alert","findIndex","alertbar","getModifier","Info","Success","Warning","AnimatorState","Alert","Number","onClose","modifier","FormControlLayout","AlertContainer","entities","repositionOtherAnimators","entityBeingRemoved","offSet","foundEntity","currentEntity","yOffset","clientHeight","onAdded","timerHandle","setTimeout","entity","animatorState","Enter","undefined","onRemoved","clearTimeout","Exit","current","old","removedItems","some","y","removed","addedItems","added","onMounted","top","style","Normal","node","el","AlertAnimator","state","offset","onAnimationend","classes","layout","Spread","FormControl","TryOutForm","addAlert","addAction","Tabs","renderTabHeader","a","children","Tab","_","Form","horizontal","ValidationMessage","hasError","FormLabel","for","FormItem","label","fullWidth","Spinner","BusyIndicator","BusyIndicatorContainer","showBusyIndicator","Dialog","DialogHeader","DialogTitle","DialogBody","DialogButtons","ConfirmationDialog","confirm","decline","showClose","isEnabled","alwaysFalse","showDialog","msg","seed","count","increase","change","isModelValue","isArray","wrapInModelValue","wrapValue","wrappedObject","unwrapModelValue","unwrapValue","unWrappedObject","simpleValidationError","message","path","PrefixedValidationError","prefix","error","this","_prefix","_error","ValidationContext","parentContext","pathSegment","rootContext","_errors","_childContexts","_isMarkedInvalid","markInvalid","childContext","childErrors","errors","childContexts","isInvalid","validatorCollection","stopAfterInvalidResult","validators","context","validator","forProperties","propertyValidators","propertyNameContainingValidator","getOwnPropertyNames","propertyName","propertyValue","childContextPathSegment","createChildContext","forScalar","forCollection","forItems","item","itemContext","PathSegmentKind","notEmpty","equals","valueToMatch","maxLength","validate","createRoot","ensureValidAutoClosingSegment","segment","processedPath","Property","Indexer","parsePath","currentSegment","char","getByPath","segments","currentObject","processValidationError","ignoreUntouched","wasTouched","validationMessage","hasAnyValidationMessages","itemHasAnyValidationMessages","useModelValidation","model","modelState","getModel","validateModel","modelToValidate","validationResult","console","patchModel","patchState","isValid","StateViewer","ID_PREFIX","idCounter","generateId","generateIds","upn","firstName","lastName","section","b","array","TestPage","defaultModel","hasErrors","ids","isBusy","changedValue","autofocus","input","focus","SectionTest","patchedValue","newValue","OVERFLOW_REGEX","findNearestScrollContainer","parentElement","parent","parentNode","computedStyles","test","overflow","overflowX","overflowY","document","scrollingElement","SCROLL_SENSITIVENESS","SCROLL_SPEED","pointerDownHandled","Draggable","onStart","onDrag","onStop","isDragging","isPointerDown","preventClick","pointerDownOffset","startOffset","startScrollOffset","scrollContainer","pointerIdentifier","hasMovedEnough","Math","abs","getTouch","changedTouches","touch","identifier","getMovement","movement","pageX","pageY","scrollTop","scrollLeft","handlePointerDown","pointerArgs","currentTarget","offsetLeft","offsetTop","onMouseDown","button","preventDefault","attachToPostMouseDownEvents","handlePointerMove","focusedElement","activeElement","blur","scroller","clientWidth","onMouseMove","handlePointerUp","onMouseUp","detachFromPostMouseDownEvents","onTouchStart","attachToPostTouchStartEvents","onTouchMove","onTouchEnd","addEventListener","removeEventListener","passive","detachFromPostTouchStartEvents","wrapOnClick","originalHandler","child","onMousedown","onTouchstart","onClick","UnmanagedDraggable","originalX","originalY","position","left","dynamicProps","SortableList","template","onOrderChanged","keySelector","dragState","indexBeingDragged","placeholderIndex","referencesRef","getPlaceholderIndex","references","currentElement","topOffset","newIndex","renderItem","padding","border","marginBottom","backgroundColor","renderPlaceholder","renderItems","elements","listStyle","margin","InlineTextEdit","isEditing","switchToEdit","patch","display","MailList","address","itemToPatch","arrayPatch","oldIndex","toString","maxHeight","Dragging","routes","component","home","about","router","history","use","mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU6B,QAGnC,IAAIC,EAASF,EAAiB5B,GAAY,CACzCK,EAAGL,EACH+B,GAAG,EACHF,QAAS,IAUV,OANAf,EAAQd,GAAUW,KAAKmB,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOC,GAAI,EAGJD,EAAOD,QAKfH,EAAoBM,EAAIlB,EAGxBY,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,SAASL,EAASM,EAAMC,GAC3CV,EAAoBW,EAAER,EAASM,IAClC3B,OAAO8B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,KAKhEV,EAAoBe,EAAI,SAASZ,GACX,qBAAXa,QAA0BA,OAAOC,aAC1CnC,OAAO8B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DpC,OAAO8B,eAAeT,EAAS,aAAc,CAAEe,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKxC,OAAOyC,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBxC,OAAO8B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBQ,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAJ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASgB,EAAQC,GAAY,OAAO9C,OAAOC,UAAUC,eAAeC,KAAK0C,EAAQC,IAGzG5B,EAAoB6B,EAAI,IAExB,IAAIC,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAW3C,KAAKsC,KAAKK,GAC5CA,EAAW3C,KAAOf,EAClB0D,EAAaA,EAAWG,QACxB,IAAI,IAAItD,EAAI,EAAGA,EAAImD,EAAWjD,OAAQF,IAAKP,EAAqB0D,EAAWnD,IAC3E,IAAIU,EAAsB2C,EAI1BzC,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,sUCrJIyC,G,UAAW,eAAgB,CACpCC,MAAO,CACHjB,MAAO,CACHkB,KAAMC,QACNC,SAAS,GAEbC,SAAUC,SACVC,KAAMC,OACNC,QAAS,CACLP,KAAMC,QACNC,SAAS,GAEbM,YAAa,CACTR,KAAMC,QACNC,SAAS,GAEbO,QAAS,CACLT,KAAMC,QACNC,SAAS,IAIjBQ,MAtBoC,SAsB9BX,GAEF,IAAMI,EAAW,SAACQ,GACVZ,EAAMI,UACNJ,EAAMI,SAAUQ,EAAKC,OAA4BC,UAIzD,OAAO,wCACU,mBADV,sBAEa,WAFb,QAEiCd,EAAMjB,MAFvC,SAEwDqB,EAFxD,UAE6EJ,EAAMU,SAFnF,gEAGc,0BAA4BV,EAAMS,YAAc,uCAAwC,KAHtG,QAIET,EAAMM,MAAN,qBAA2B,yBAA2BN,EAAMQ,QAAU,mCAAoC,KAA1G,CAAgHR,EAAMM,MAAtH,U,8hCCzBjB,IAAMS,EAAa,IAAIC,QACjBC,EAAiB,IAAIC,gBACvB,SAACC,GAAW,UACYA,GADZ,IACR,2BAA6B,KAAlBC,EAAkB,QACnBC,EAAmBD,EAAMP,OACzBS,EAAuCP,EAAWpC,IAAI0C,GAC5D,GAAIC,EAAU,OACgBF,EAAMG,YAAxBC,EADE,EACFA,MAAOC,EADL,EACKA,OACfH,EAAS,CAACE,QAAOC,aANjB,kCAYhB,SAASC,EAASL,EAAkBC,GAChCP,EAAWY,IAAIN,EAASC,GACxBL,EAAeW,QAAQP,GAG3B,SAASQ,EAAWR,GAChBN,EAAWe,OAAOT,GAClBJ,EAAec,UAAUV,GAGvB,SAAUW,IACZ,IAAMC,EAAO,eAAS,CAClBT,MAAO,EACPU,aAAc,EACdT,OAAQ,EACRU,cAAe,IAGbd,EAAU,eAAwB,MAElCe,EAA2B,SAACC,GAC9BJ,EAAKT,MAAQa,EAAQb,MACrBS,EAAKR,OAASY,EAAQZ,QAe1B,OAZA,gBAAU,WACN,gBAAY,SAACa,GACT,IAAMC,EAA6BlB,EAAQtC,MACtCwD,IAGLb,EAASa,EAAYH,GAErBE,GAAa,kBAAMT,EAAWU,aAI/B,CACHlB,UACAY,QC5DD,IAAMO,EAAa,eAAgB,CACtCxC,MAAO,CACHyC,KAAM,CACFxC,KAAMM,OACNmC,UAAU,IAIlB/B,MARsC,SAQhCX,GAEF,OAAO,WACH,+CAC6BA,EAAMyC,OADnC,Y,2uBCVZ,IAAME,EAAkB9D,OAAO,mBAElB,EAAmB,SAAC+D,GAAD,OAA2B,eAAQD,EAAiBC,IAEvE,EAAkB,kBAAM,eAAmBD,IASlD,SAAUE,IAEZ,IAAMC,EAAU,eAAI,IAEdC,EAAM,SAACC,GACTF,EAAQ/D,MAAR,YAAoB+D,EAAQ/D,OAA5B,CAAmCiE,KAGjCC,EAAS,SAACD,GACZ,IAAME,EAAgBJ,EAAQ/D,MAAMoE,QAAQH,GAC5C,IAAe,IAAXE,EAAJ,CAIA,IAAME,EAAO,EAAIN,EAAQ/D,OACzBqE,EAAKxF,OAAOsF,EAAO,GACnBJ,EAAQ/D,MAAQqE,IAGdR,EAAwB,CAC1BG,MACAE,UAGJ,MAAO,CACHL,YACAE,QAAS,eAASA,IAInB,IAAMO,EAAY,eAAgB,CACrCrD,MAAO,CACH8C,QAAS,CACL7C,KAAMqD,MACNZ,UAAU,IAIlB/B,MARqC,SAQ/BX,EAR+B,GAQf,IAAPuD,EAAO,EAAPA,MACX,OAAO,WACH,6CAGavD,EAAM8C,QAAQU,KAAI,SAACC,EAAGjH,GAAJ,wBAAoBA,GAApB,CAAwBiH,SAE7CF,EAAMpD,SAAWoD,EAAMpD,gBAOhCuD,EAAU,eAAgB,CACnC1D,MAAO,CACH2D,MAAO,CACH1D,KAAMqD,MACNZ,UAAU,IAIlB/B,MARmC,SAQ7BX,GAAK,MACmBgC,IAAlBX,EADD,EACCA,QAASY,EADV,EACUA,KAEX2B,EAAY,eAAS,IAErBC,EAAe,gBACjB,WACI,IAAIC,EAA0B7B,EAAKT,MACnC,GAAIH,EAAQtC,MAAO,OACuBa,OAAOmE,iBAAiB1C,EAAQtC,OAA9DiF,EADO,EACPA,YAAaC,EADN,EACMA,aACrBH,GAA4BI,WAAWF,GAAeE,WAAWD,GAGrE,IAAME,EAAWP,EACjB,OAAO5D,EAAM2D,MAAMH,KAAI,SAACC,EAAGjH,GACvB,IAAM4H,EAAWD,EAAS3H,GAAK2H,EAAS3H,GAAK,CAAEgF,MAAO,EAAGC,OAAQ,GAEjE,OADAqC,GAA2BM,EAAS5C,MAC7B,CACHlD,KAAMmF,EACNY,aAAcP,GAA2B,SAMzD,eAAMF,GAAW,SAACrE,EAAE+E,OAIpB,IAAMC,EAAS,SAACrB,EAAejB,GAC3B2B,EAAUV,GAASjB,GAGvB,OAAO,WACH,wBACaZ,EADb,MAC4B,4BAD5B,oBAEkB,iCAFlB,oBAGsB,uBAHtB,CAIiBwC,EAAa9E,MACTyF,QAAO,SAAAf,GAAC,OAAIA,EAAEY,gBACdb,KAAI,SAACC,EAAGjH,GAAJ,uBACmBiH,EAAEnF,KADrB,KACiC,QADjC,cACyD,SAAC2D,GAAD,OAAUsC,EAAO/H,EAAGyF,KAD7E,yCANzB,mBAYkB,iCAZlB,MAYyD,kBAZzD,mBAaqB,4BAbrB,cAa6D,YAb7D,mBAaiF,oBAbjF,4BAcuB,gCAdvB,qBAe2B,eAf3B,oBAgB8B,mCAhB9B,oBAiBkC,kCAjBlC,oBAkBsC,SAlBtC,2BAoBkC,iCApBlC,oBAqBsC,SArBtC,mCA2BkB,kCA3BlB,oBA4BsB,uBA5BtB,kBAoCNwC,EAAc,eAAgB,CAChCzE,MAAO,CACH0E,MAAO,CACHzE,KAAMM,OACNmC,UAAU,GAEdiC,KAAM,CACF1E,KAAMM,OACNmC,UAAU,GAEdkC,cAAe,CACX3E,KAAMI,SACNqC,UAAU,IAIlB/B,MAhBgC,SAgBzBX,GAAK,MAEiBgC,IAAlBX,EAFC,EAEDA,QAASY,EAFR,EAEQA,KAShB,OAPA,eACIA,GACA,SAACI,GACGrC,EAAM4E,cAAcvC,MAIrB,WAEH,wBACahB,EADb,MAC4B,kBAD5B,iBAC6D,aAD7D,mBAEiB,aAFjB,gBAE+CrB,EAAM2E,MAFrD,iBAE8D3E,EAAM0E,SAFpE,SASS,eAAgB,CACjC1E,MAAO,CACH0E,MAAO,CACHzE,KAAMM,OACNmC,UAAU,GAEdiC,KAAM,CACF1E,KAAMM,OACNmC,UAAU,IAIlB/B,MAZiC,SAY1BX,GACH,OAAO,WAEH,0BACc,2BADd,iBACwD,aADxD,mBAEiB,4BAFjB,cAEyD,YAFzD,gBAG8BA,EAAM2E,MAHpC,iBAG6C3E,EAAM0E,MAHnD,kBAIqB,SAJrB,4BAMmB,gCANnB,qBAOuB,eAPvB,oBAQ0B,mCAR1B,gBAmBoB,eAAgB,CAC5C1E,MAAO,CACH0E,MAAO,CACHzE,KAAMM,OACNmC,UAAU,GAEdiC,KAAM,CACF1E,KAAMM,OACNmC,UAAU,IAIlB/B,MAZ4C,SAYrCX,GACH,OAAO,WAEH,0BACc,uCADd,iBACoE,aADpE,mBAEiB,wCAFjB,cAEqE,YAFrE,qBAGuB,oCAHvB,gBAG4EA,EAAM2E,MAHlF,iBAG2F3E,EAAM0E,QAHjG,oBAIuB,WAJvB,0BAKuB,yCALvB,mBAMyB,SANzB,8BASmB,gCATnB,qBAUuB,eAVvB,oBAW0B,mCAX1B,gBAsBO,eAAgB,CAE/B/D,MAF+B,SAExBX,GAEH,OAAO,WACH,0BACc,kBADd,iBAC+C,aAD/C,sBAEoB,eAFpB,sBAGwB,SAHxB,MAGuC,eAHvC,YAGkE,uBAHlE,cAWQ,eAAgB,CAChCA,MAAO,CACH4E,cAAe,CACX3E,KAAMI,SACNqC,UAAU,IAIlB/B,MARgC,SAQzBX,EARyB,GAQT,IAAPuD,EAAO,EAAPA,MAAO,EAEMvB,IAAlBX,EAFY,EAEZA,QAASY,EAFG,EAEHA,KAShB,OAPA,eACIA,GACA,SAACI,GACGrC,EAAM4E,cAAcvC,MAIrB,WACH,wBACahB,GADb,CAEUkC,EAAMpD,SAAWoD,EAAMpD,WAFjC,S,mkECpSL,ICWK0E,EDXCC,EAAb,8BACI,WAAY/F,GAAY,0DACQgG,KAAKC,UAAUjG,GADvB,MAD5B,YAA2CkG,Q,+lDCyBrC,SAAUC,IAEZ,IAAMC,EAAwB,eAAI,IAE9BjC,EAAgB,EAEpB,SAASkC,EACLC,EACA5C,EACA6C,GAEA,IAAMC,EAAarC,IAEbsC,EAAgB,CAClBD,KACAF,UACA5C,OACA6C,WAKJ,OAFAH,EAAOpG,MAAP,YAAmBoG,EAAOpG,OAA1B,CAAiCyG,IAE1BD,EAGX,SAAStC,EAAOsC,GACZ,IAAMrC,EAAgBiC,EAAOpG,MAAM0G,WAAU,SAAAhC,GAAC,OAAIA,EAAE8B,KAAOA,KAC3D,IAAe,IAAXrC,EAAJ,CAIA,IAAME,EAAO,EAAI+B,EAAOpG,OACxBqE,EAAKxF,OAAOsF,EAAO,GACnBiC,EAAOpG,MAAQqE,GAGnB,IAAMsC,EAAsB,CACxBN,OACAnC,UAGJ,MAAO,CACHkC,OAAQ,eAASA,GACjBO,YAIR,SAASC,EAAYlD,GACjB,OAAQA,GAEJ,KAAKoC,EAAUe,KACX,MAAO,kBACX,KAAKf,EAAUgB,QACX,MAAO,qBACX,KAAKhB,EAAUiB,QACX,MAAO,qBACX,KAAKjB,EAAUI,MACX,MAAO,oBACX,QACI,MAAM,IAAIH,EAAsBrC,KAzE5C,SAAYoC,GACR,sBACA,4BACA,4BACA,yBAJJ,CAAYA,MAAS,KA6Ed,IA2CFkB,GA3CQC,GAAQ,eAAgB,CACjChG,MAAO,CACHyC,KAAM,CACFxC,KAAMgG,OACNvD,UAAU,GAEdwD,QAAS,CACLjG,KAAMI,WAIdM,MAXiC,SAW3BX,EAX2B,GAWb,IAANuD,EAAM,EAANA,MAEV,OAAO,WACH,IAAM4C,EAAmBR,EAAY3F,EAAMyC,MAE3C,+CAC6B0D,IAD7B,qBAEmB,mBAFnB,mBAGqB,oBAHrB,4BAKmB,sBALnB,CAMa5C,EAAMpD,SAAWoD,EAAMpD,YANpC,sBAQqB,SARrB,MAQoC,qBARpC,QAQkEH,EAAMkG,SARxE,mBASqB,qBATrB,+BA2BZ,SAAKH,GACD,wBACA,0BACA,uBAHJ,CAAKA,QAAa,KAgBX,IC7IFK,GD6IQC,GAAiB,eAAgB,CAC1CrG,MAAO,CACHmF,OAAQ,CACJlF,KAAMqD,MACNZ,UAAU,GAEdgD,SAAS,CACLzF,KAAMtD,OACN+F,UAAU,IAGlB/B,MAX0C,SAWpCX,GACF,IAAMsG,EAA0B,eAAS,IAEnCC,EAA2B,SAACC,GAC9B,IADiE,EAC7DC,EAAiB,EACjBC,GAAuB,EAFsC,IAIrCJ,GAJqC,IAIjE,2BAAsC,KAA3BK,EAA2B,QAC9BA,EAAcpB,KAAOiB,EAAmBjB,GAKvCoB,EAActF,UAIfqF,IACAC,EAAcC,QAAUH,GAG5BA,GAAkBE,EAActF,QAAQwF,cAZpCH,GAAc,GAN2C,gCAsB/DI,EAAU,SAACtB,GAAiB,IAE1BD,EAIAC,EAJAD,GACA9C,EAGA+C,EAHA/C,KACA4C,EAEAG,EAFAH,QACAC,EACAE,EADAF,QAGEyB,EAAsBC,YACxB,kBAAMhH,EAAM0F,SAASzC,OAAOsC,KAC5BD,GAAW,KAET2B,EAAsB,CACxB1B,KACA9C,OACA4C,UACA0B,cACA1F,QAAS,KACT6F,cAAenB,GAAcoB,MAC7BP,aAASQ,GAGbd,EAAStJ,KAAK,eAASiK,KAGrBI,EAAY,SAAC7B,GACf,IAAMtC,EAAgBoD,EAASb,WAAU,SAAAhC,GAAC,OAAIA,EAAE8B,KAAOC,EAAMD,MAC7D,IAAe,IAAXrC,EAAJ,CAIAoE,aAAahB,EAASpD,GAAO6D,aAC7B,IAAME,EAAsBX,EAASpD,GACrC,GAAI+D,EAAO5F,QAAS,CAChB,GAAI4F,EAAOC,gBAAkBnB,GAAcwB,KACvC,OAEJN,EAAOC,cAAgBnB,GAAcwB,KACrChB,EAAyBU,QAEzBX,EAAS1I,OAAOsF,EAAO,KAI/B,gBACI,kBAAMlD,EAAMmF,UACZ,SAACqC,EAASC,GACN,IADa,EACPC,EAAeD,EAAIjD,QAAO,SAAAf,GAAC,OAAK+D,EAAQG,MAAK,SAAAC,GAAC,OAAIA,GAAKnE,QADhD,IAESiE,GAFT,IAEb,2BAAoC,KAAzBG,EAAyB,QAChCR,EAAUQ,IAHD,8BAMb,IANa,EAMPC,EAAaN,EAAQhD,QAAO,SAAAf,GAAC,OAAKgE,EAAIE,MAAK,SAAAC,GAAC,OAAIA,GAAKnE,QAN9C,IAOOqE,GAPP,IAOb,2BAAgC,KAArBC,EAAqB,QAC5BjB,EAAQiB,IARC,kCAarB,IAAMC,EAAY,SAACf,GAIf,IAHA,IAAIR,EAAiB,EACjBC,GAAuB,EAElBlK,EAAI,EAAGA,EAAI8J,EAAS5J,OAAQF,IAAK,CACtC,IAAMmK,EAA6BL,EAAS9J,GAK5C,GAJImK,EAAcpB,KAAO0B,EAAO1B,KAC5BmB,GAAc,GAGbC,EAActF,QAAnB,CAIIqF,IACAC,EAAcC,QAAUH,GAG5B,IAAMwB,EAAc/D,WAAWyC,EAActF,QAAQ6G,MAAMD,KAAO,KAAO,EACzExB,EAASwB,EAAMtB,EAActF,QAAQwF,gBAIvC,EAAiB,SAACI,GACpB,OAAQA,EAAOC,eACX,KAAKnB,GAAcoB,MACfF,EAAOC,cAAgBnB,GAAcoC,OACrC,MACJ,KAAKpC,GAAcwB,KACf,IAAMrE,EAAgBoD,EAASb,WAC3B,SAAChC,GAAD,OAAOA,EAAE8B,KAAO0B,EAAO1B,OAEZ,IAAXrC,GACAoD,EAAS1I,OAAOsF,EAAO,GAE3B,MAEJ,KAAK6C,GAAcoC,OAEf,QAIZ,OAAO,WACH,2BACe,sBADf,CAEK7B,EAAS9C,KAAI,SAAAC,GACV,sBAEiBA,EAAE8B,GAFnB,MAGmB9B,EAAEyD,cAHrB,OAIoBzD,EAAEmD,QAJtB,eAK4B,kBAAM,EAAenD,IALjD,eAM4B,SAAC2E,GACb3E,EAAEpC,QAAU+G,EAAKC,GACjBL,EAAUvE,KAR1B,2CAYsBA,EAAEhB,KAZxB,QAayB,kBAAMzC,EAAM0F,SAASzC,OAAOQ,EAAE8B,MAbvD,2BAgBiB9B,EAAE8B,GAAI9B,EAAE4B,aAhBzB,0FA4BPiD,GAAgB,eAAgB,CACzCtI,MAAO,CACHuI,MAAO,CACHtI,KAAMgG,OACNvD,UAAU,GAEd8F,OAAQ,CACJvI,KAAMgG,OACNvD,UAAU,GAEd+F,eAAgB,CACZxI,KAAMI,SACNqC,UAAU,IAIlB/B,MAhByC,SAgBnCX,EAhBmC,GAgBrB,IAANuD,EAAM,EAANA,MAEV,OAAO,WACH,IAAImF,EAAU,qBACV1I,EAAMuI,QAAUxC,GAAcoB,MAC9BuB,GAAW,6BACJ1I,EAAMuI,QAAUxC,GAAcwB,OACrCmB,GAAW,6BAGf,IAAMR,EAAQ,CACVD,SAA8Bb,IAAxB,EAAOpH,EAAMwI,QAAb,UACGxI,EAAMwI,OADT,WAEApB,GAGV,2BAEesB,EAFf,MAGeR,EAHf,eAIwB,kBAAMlI,EAAMyI,mBAJpC,CAMSlF,EAAMpD,SAAWoD,EAAMpD,WANhC,2BClVZ,SAAS,GAAYwI,GACjB,OAAOA,GAEH,KAAKvC,GAAkB+B,OACnB,MAAO,GACX,KAAK/B,GAAkBwC,OACnB,MAAO,wBACX,QACI,MAAM,IAAI9D,EAAsB6D,KAb5C,SAAKvC,GACD,0BACA,2BAFJ,CAAKA,QAAiB,KAiBf,IAAMyC,GAAc,eAAgB,CACvC7I,MAAO,CACH2I,OAAQ,CACJ1I,KAAMgG,OACN9F,QAASiG,GAAkB+B,SAInCxH,MARuC,SAQjCX,EARiC,GAQjB,IAAPuD,EAAO,EAAPA,MACL4C,EAAmB,GAAYnG,EAAM2I,QAE3C,OAAO,sCACS,iBAAoBxC,GAD7B,CAEG5C,EAAMpD,SAAWoD,EAAMpD,WAF1B,OAQF2I,GAAa,eAAgB,CACtCnI,MADsC,WAElC,IAAMiC,EAAoC,IADzC,EAG2BsC,IAApBQ,EAHP,EAGOA,SAAUP,EAHjB,EAGiBA,OAEZ4D,EAAW,WACbrD,EAASN,MACL,gEACAP,EAAUiB,UAIZkD,EAAY,WACTpG,GAGLA,EAAUG,IAAI,eAGlB,OAAO,yCAEa,GAFb,iDAIc,SAJd,QAIgCiG,GAJhC,4DAKc,SALd,QAKgCD,GALhC,4CAAC,IAAD,SAM2BrD,EAN3B,OAM6CP,EAAOpG,OANpD,0FASiB,cATjB,kCAAC,GAAD,OAWgB,EAXhB,KAYe,iBAZf,aAAC,GAAD,OAgBgB,EAhBhB,KAiBe,kBAjBf,aAAC,GAAD,OAqBgB,EArBhB,KAsBe,aAtBf,2BA2BiB,cA3BjB,iDA4BkB,cA5BlB,KA4BqC,QA5BrC,2BA+BiB,cA/BjB,iDAgCkB,cAhClB,KAgCqC,QAhCrC,0EAoCkB,cApClB,KAoCqC,QApCrC,gCAuCsB,GAvCtB,iDAwCkB,cAxClB,KAwCqC,QAxCrC,iBAAC,IAAD,KA4Cc8F,EAAUe,MA5CxB,iEAAC,IAAD,KAgDcf,EAAUgB,SAhDxB,iEAAC,IAAD,KAoDchB,EAAUiB,SApDxB,iEAAC,IAAD,KAwDcjB,EAAUI,OAxDxB,iEAAC,QAAD,GA4Dc,kBA5Dd,kCAAC,wGAAD,OAAC,QAAD,GAmEc,kBAnEd,wFAAC,QAAD,GAuEc,sBAvEd,4IA4EgB,QA5EhB,qFA+EgB,QA/EhB,qFAkFgB,QAlFhB,gFA2FFgE,GAAO,eAAgB,CAEhCtI,MAFgC,SAE1BX,EAF0B,GAEV,IAAPuD,EAAO,EAAPA,MACL2F,EAAkB,SAACC,GAAY,MACjC,mCAAaA,EAAEnJ,aAAf,aAAa,EAAS0E,SAG1B,OAAO,WAEH,IAAM0E,EAAW7F,EAAMpD,QAAUoD,EAAMpD,UAAY,GAEnD,4CAGaiJ,EAAS5F,KAAI,SAAAC,GAAC,OAAIyF,EAAgBzF,QAGtC2F,QAQRC,GAAM,eAAgB,CAC/BrJ,MAAO,CACH0E,MAAO,CACHzE,KAAMM,OACNmC,UAAU,IAIlB/B,MAR+B,SAQzB2I,EARyB,GAQb,IAAP/F,EAAO,EAAPA,MACP,OAAO,qCAEGA,EAAMpD,SAAWoD,EAAMpD,gBAM5BoJ,GAAO,eAAgB,CAChCvJ,MAAO,CACHwJ,WAAYtJ,SAGhBS,MALgC,SAK1BX,EAL0B,GAKV,IAAPuD,EAAO,EAAPA,MACX,OAAO,uCACU,QAAUvD,EAAMwJ,WAAa,oBAAqB,KAD5D,CAEGjG,EAAMpD,SAAWoD,EAAMpD,WAF1B,OAoCFsJ,IA5BgB,eAAgB,CACzCzJ,MAAO,CACHjB,MAAOwB,OACPH,SAAUC,SACVqJ,SAAUxJ,SAGdS,MAPyC,SAOnCX,GAEF,OAAO,WACH,IAAI0I,EAAkB,cAClB1I,EAAM0J,WACNhB,GAAW,uBAGf,IAAMtI,EAAW,SAACQ,GACVZ,EAAMI,UACNJ,EAAMI,SAAUQ,EAAKC,OAA4B9B,QAIzD,4BACgB,OADhB,MAC8B2J,EAD9B,SACiDtI,GADjD,0BAOqB,eAAgB,CAC7CJ,MAAO,CACHM,KAAM,CACFL,KAAMM,SAIdI,MAP6C,SAOtCX,GAEH,OAAO,yBAAC,aAEEA,EAAMM,MAAN,qBAA0B,sBAA1B,CAAgDN,EAAMM,cAM3DqJ,GAAY,eAAgB,CACrC3J,MAAO,CACHM,KAAM,CACFL,KAAMM,OACNmC,UAAU,GAEdkH,IAAK,CACD3J,KAAMM,OACNJ,QAAS,OAIjBQ,MAZqC,SAY/BX,GACF,OAAO,wCACU,cADV,IAC6BA,EAAM4J,KADnC,CACyC5J,EAAMM,MAD/C,eAMFuJ,GAAW,eAAgB,CACpC7J,MAAO,CACH8J,MAAO,CACH7J,KAAMM,OACNJ,QAAS,MAEbyJ,IAAK,CACD3J,KAAMM,OACNJ,QAAS,MAEb4J,UAAW,CACP9J,KAAMC,QACNC,SAAS,IAIjBQ,MAhBoC,SAgB9BX,EAhB8B,GAgBd,IAAPuD,EAAO,EAAPA,MACX,OAAO,WACH,4BACgB,cADhB,CAESvD,EAAM8J,OAAN,gBAAgC9J,EAAM8J,MAAtC,IAAkD9J,EAAM4J,KAAxD,uBAFT,kBAIoB5J,EAAM+J,UAAY3D,GAAkBwC,OAASxC,GAAkB+B,QAJnF,2BAMc5E,EAAMpD,SAAWoD,EAAMpD,aANrC,oBCjSC6J,I,oBAAU,eAAgB,CAEnCrJ,MAFmC,WAI/B,OAAO,WACH,2BACe,WADf,WAOCsJ,GAAgB,eAAgB,CACzCtJ,MADyC,WAGrC,OAAO,WAEH,2BACe,kBADf,qBAEmB,2BAFnB,8BAWCuJ,GAAyB,eAAgB,CAClDlK,MAAO,CACHmK,kBAAmB,CACflK,KAAMC,QACNwC,UAAU,IAIlB/B,MARkD,SAQ5CX,EAR4C,GAQ5B,IAAPuD,EAAO,EAAPA,MACX,OAAO,WACH,2BACe,uBADf,CAEUvD,EAAMmK,mBAAN,qBACA5G,EAAMpD,SAAWoD,EAAMpD,gBCvChCiK,GAAS,eAAgB,CAClCpK,MAAO,CACHmK,kBAAmB,CACflK,KAAMC,QACNwC,UAAU,IAIlB/B,MARkC,SAQ5BX,EAR4B,GAQZ,IAAPuD,EAAO,EAAPA,MAEX,OAAO,WAEH,yBACiB,YADjB,+CAEmB,oBAFnB,qBAGuB,UAHvB,8BAI2DvD,EAAMmK,mBAJjE,2BAKsB5G,EAAMpD,SAAWoD,EAAMpD,aAL7C,qCAeCkK,GAAe,eAAgB,CACxCrK,MAAO,CACH0E,MAAO,CACHzE,KAAMM,OACNmC,UAAU,GAEdwD,QAAS,CACLjG,KAAMI,SACNqC,UAAU,IAIlB/B,MAZwC,SAYlCX,EAZkC,GAYlB,IAAPuD,EAAO,EAAPA,MACX,OAAO,WACH,2BACe,iBADf,iBAE2BvD,EAAM0E,OAFjC,iBAGUnB,EAAMpD,SAAWoD,EAAMpD,UACvBH,EAAMkG,SAAN,sBACe,SADf,MAC8B,UAD9B,QACiD,kBAAMlG,EAAMkG,YAD7D,gBAEuB,SAFvB,4BAWToE,GAAc,eAAgB,CACvCtK,MAAO,CACHM,KAAM,CACFL,KAAMM,OACNmC,UAAU,IAIlB/B,MARuC,SAQjCX,GAEF,OAAO,WACH,0BACc,gBADd,CAC8BA,EAAMM,WAMnCiK,GAAa,eAAgB,CACtC5J,MADsC,SAChC2I,EADgC,GACpB,IAAP/F,EAAO,EAAPA,MAEP,OAAO,WACH,2BACe,eADf,CAEUA,EAAMpD,SAAWoD,EAAMpD,gBAOhCqK,GAAgB,eAAgB,CACzC7J,MADyC,SACnC2I,EADmC,GACvB,IAAP/F,EAAO,EAAPA,MAEP,OAAO,WACH,2BACe,gCADf,CAEUA,EAAMpD,SAAWoD,EAAMpD,gBChFhCsK,GAAqB,eAAgB,CAC9CzK,MAAO,CACH0E,MAAO,CACHzE,KAAMM,OACNmC,UAAU,GAEdgI,QAAS,CACLzK,KAAMtD,OACN+F,UAAU,GAEdiI,QAAS,CACL1K,KAAMtD,OACN+F,UAAU,GAEdkI,UAAW,CACP3K,KAAMC,QACNwC,UAAU,IAIlB/B,MApB8C,SAoBxCX,EApBwC,GAoB1B,IAANuD,EAAM,EAANA,MAEV,OAAO,yBAAC,SAAD,iCAAC,IAAD,MAGYvD,EAAM0E,MAHlB,QAKS1E,EAAM4K,UACA,kBAAM5K,EAAM2K,QAAQ3H,eACpBoE,GAPf,mCAAC,SAAD,0BAYO7D,EAAMpD,SAAWoD,EAAMpD,cAZ9B,OAAC,SAAD,gDAgBc,SAhBd,QAiBkB,kBAAMH,EAAM0K,QAAQ1H,WAjBtC,CAmBUhD,EAAM0K,QAAQpK,MAnBxB,qCAuBc,SAvBd,QAwBkB,kBAAMN,EAAM2K,QAAQ3H,WAxBtC,CA0BUhD,EAAM2K,QAAQrK,MAAQ,SA1BhC,2BClCA,kBAAgB,CAC3BK,MAD2B,WAEzB,IAAMkK,EAAY,gBAAI,GAEhBC,EAAc,gBAAI,GAElBC,EAAa,gBAAI,GALpB,EAO2BlI,IAAtBD,EAPL,EAOKA,UAAWE,EAPhB,EAOgBA,QAGnB,OAFA,EAAiBF,GAEV,sCACM,SADN,QAAC,GAAD,QAEmBE,EAAQ/D,OAF3B,8FAIY,SAJZ,QAI8B,kBAAMgM,EAAWhM,OAAQ,IAJvD,8CAAC,GAAD,KAOO,aAPP,MAQQ8L,EAAU9L,MARlB,SASW,SAAC0E,GAAD,OAAOoH,EAAU9L,MAAQ0E,IATpC,6BAaAoH,EAAU9L,MAAQ,UAAY,MAb9B,OAAC,GAAD,OAgBQ,EAhBR,KAiBO,cAjBP,aAAC,GAAD,OAsBQ,EAtBR,KAuBO,eAvBP,SAwBU,GAxBV,aAAC,GAAD,OA6BQ,EA7BR,KA8BO,cA9BP,SA+BU,EA/BV,aAgCc,GAhCd,aAAC,GAAD,OAqCQ,EArCR,KAsCO,eAtCP,aAAC,GAAD,MA2CQ+L,EAAY/L,MA3CpB,KA4CO,eA5CP,SAgDW,SAAC0E,GAAOqH,EAAY/L,MAAQ0E,EAAGuD,YAAW,kBAAM8D,EAAY/L,OAAQ,IAAO,KAhDtF,oCAAC,cAqDAgM,EAAWhM,OAAX,iBAEQ,gBAFR,WAGa,EAHb,QAIW,CACPuB,KAAM,OACN0C,OAAQ,WACN+H,EAAWhM,OAAQ,IAPzB,QAUW,CACPiE,OAAQ,WACN+H,EAAWhM,OAAQ,KAZzB,4CAiBW,EAjBX,KAkBU,eAlBV,wCC/DC,kBAAgB,CAC7BiB,MAAO,CACLgL,IAAKzK,OACLoD,MAAOL,OAET3C,MAL6B,SAKvBX,GACJ,OAAO,sCACM,SADN,mBAEIA,EAAMgL,MAFV,iKAMS,wBANT,OAMwC,SANxC,IAMqD,YANrD,0JAUW,6EAVX,OAU+F,SAV/F,IAU4G,YAV5G,wDAWW,kFAXX,OAWoG,SAXpG,IAWiH,YAXjH,6DAYW,8EAZX,OAYgG,SAZhG,IAY6G,YAZ7G,yDAaW,8EAbX,OAagG,SAbhG,IAa6G,YAb7G,yDAcW,kFAdX,OAcoG,SAdpG,IAciH,YAdjH,+HAkBW,oBAlBX,OAkBsC,SAlBtC,IAkBmD,YAlBnD,4DAmBW,0BAnBX,OAmB4C,SAnB5C,IAmByD,YAnBzD,wDAoBW,yBApBX,OAoB2C,SApB3C,IAoBwD,YApBxD,iEAqBW,4BArBX,OAqB8C,SArB9C,IAqB2D,YArB3D,0DAsBW,yBAtBX,OAsB2C,SAtB3C,IAsBwD,YAtBxD,mHA0BW,2BA1BX,OA0B6C,SA1B7C,IA0B0D,YA1B1D,6DA2BW,yBA3BX,OA2B2C,SA3B3C,IA2BwD,YA3BxD,uDA4BW,qDA5BX,OA4BuE,SA5BvE,IA4BoF,YA5BpF,+DA6BW,+BA7BX,OA6BiD,SA7BjD,IA6B8D,YA7B9D,6DA8BW,uCA9BX,OA8ByD,SA9BzD,IA8BsE,YA9BtE,mCCZI,kBAAgB,CAC3BhL,MAAO,CACHiL,KAAMhF,QAGVtF,MAL2B,SAKrBX,GACF,IAAMkL,EAAQ,eAAIlL,EAAMiL,MAAQ,GAC1BE,EAAW,WACbD,EAAMnM,SAGV,OAAO,8DAEkBoM,GAFlB,oBAEqCD,EAAMnM,MAF3C,wC,wBCPA,kBAAgB,CAC7B4B,MAD6B,WAE3B,IAAMqK,EAAM,eAAI,mBACVI,EAAS,WACbJ,EAAIjM,MAAQ,OAGd,OAAO,sCACQ,QADR,mBAEU,WAFV,IAE0B,MAF1B,yCAGkBqM,GAHlB,iDAAC,IAAD,KAIgB,IAJhB,aAAC,IAAD,IAKmBJ,EAAIjM,MALvB,MAKqC,CAAC,CAAEwG,GAAI,EAAGjF,KAAM,SALrD,sB,y6DCHL,SAAU+K,GAAatM,GACzB,OAAOA,GACiB,WAAjB,GAAOA,KACNuE,MAAMgI,QAAQvM,IACf,UAAWA,EAyBhB,SAAUwM,GACZxM,GAEA,MAAO,CACHA,MAAOyM,GAAUzM,IAInB,SAAUyM,GAAkBzM,GAC9B,GAAIuE,MAAMgI,QAAQvM,GACd,OAAOA,EAAMyE,KAAI,SAACC,GAAD,OAAO8H,GAAiB9H,MAG7C,GAAqB,WAAjB,GAAO1E,IACM,OAAVA,QACUqI,IAAVrI,EACN,CACG,IAAM0M,EAAgB,GACtB,IAAK,IAAMhM,KAAYV,EAElB0M,EAAsBhM,GAAa8L,GAAiBxM,EAAMU,IAG/D,OAAOgM,EAGX,OAAO1M,EA+BL,SAAU2M,GAAyB3M,GACrC,OAAIsM,GAAatM,GACN4M,GAAY5M,EAAMA,OAItBA,EAGL,SAAU4M,GAAoB5M,GAChC,GAAIuE,MAAMgI,QAAQvM,GACd,OAAOA,EAAMyE,KAAI,SAACC,GAAD,OAAOiI,GAAiBjI,MAG7C,GAAqB,WAAjB,GAAO1E,IACM,OAAVA,QACUqI,IAAVrI,EACN,CACG,IAAM6M,EAAkB,GACxB,IAAK,IAAMnM,KAAYV,EAElB6M,EAAwBnM,GAAaiM,GAAiB3M,EAAMU,IAGjE,OAAOmM,EAGX,OAAO7M,EAQL,SAAU8M,GAAsBC,GAClC,MAAO,CACHA,UACAC,KAAM,IAIP,IAAMC,GAAb,WAaI,WAAYC,EAAgBC,GAAuB,WAE/CC,KAAKC,QAAUH,EACfE,KAAKE,OAASH,EAhBtB,wCAMQ,OAAOC,KAAKC,QAAUD,KAAKE,OAAON,OAN1C,8BAUQ,OAAOI,KAAKE,OAAOP,YAV3B,KAmCaQ,GAAb,WAwCI,WACIC,EACAC,EACAzN,GAAa,WAEboN,KAAKI,cAAgBA,EACrBJ,KAAKM,aAA2B,OAAbF,QAAa,IAAbA,OAAA,EAAAA,EAAeE,cAAeN,KACjDA,KAAKpN,MAAQA,EACboN,KAAKK,YAAcA,EACnBL,KAAKO,QAAU,GACfP,KAAKQ,eAAiB,GACtBR,KAAKS,kBAAmB,EAnDhC,uCAsDeV,GAEPC,KAAKU,cACLV,KAAKO,QAAQ1P,KAAK,IAAIgP,GAAwBG,KAAKK,YAAaN,MAzDxE,oCA8DQC,KAAKS,kBAAmB,IA9DhC,yCAsE2CJ,EAAqBzN,GAExD,IAAM+N,EAAe,IAAIR,EAA+BH,KAAMK,EAAazN,GAE3E,OADAoN,KAAKQ,eAAe3P,KAAK8P,GAClBA,IA1Ef,2BAaQ,OAAOX,KAAKI,cACNJ,KAAKI,cAAcR,KAAOI,KAAKK,YAC/BL,KAAKK,cAfnB,oCAmBQ,OAAOL,KAAKQ,iBAnBpB,6BAuBQ,IADa,EACPpP,EAAM,GAA2B4O,KAAKO,SAEtCF,EAAsBL,KAAKK,YAHpB,KAIcL,KAAKQ,gBAJnB,IAIb,2BACA,KADWG,EACX,QACUC,EAA2CD,EAAaE,OAC7DxJ,KAAI,SAAAC,GAAC,OAAI,IAAIuI,GAAwBQ,EAAa/I,MACnDlG,EAAOP,KAAP,MAAAO,EAAM,GAASwP,KARN,8BAWb,OAAOxP,IAjCf,gCAqCQ,OAAO4O,KAAKS,kBAAoBT,KAAKc,cAActF,MAAK,SAAAlE,GAAC,OAAIA,EAAEyJ,gBArCvE,kCAiEqCnO,GAE7B,OAAO,IAAIuN,EAA0B,KAAM,GAAIvN,OAnEvD,KAgFM,SAAUoO,GAAV,GAEiC,QADjCC,EACiC,EADjCA,uBACiC,mBAAhCC,EAAgC,iCAAhCA,EAAgC,kBAGnC,OAAO,SAACC,GAAW,WACSD,GADT,IACf,2BAAoC,KAAzBE,EAAyB,QAEhC,GADAA,EAAUD,GACNF,GAA0BE,EAAQJ,UAClC,QAJO,gCAwBjB,SAAUM,GACZC,GAEA,OAAO,SAACH,GACJ,IADe,EACTvO,EAAiBuO,EAAQvO,OAAS,GAIlC2O,EAA4C/Q,OAAOgR,oBAAoBF,GAL9D,KAMYC,GANZ,IAMf,2BAA4D,KAAjDE,EAAiD,QAElDL,EAAkCE,EAA2BG,GAE/DC,OAAyBzG,EACzBwG,KAAgB7O,IAChB8O,EAAiB9O,EAAc6O,IAGnC,IAAME,EAA0BR,EAAQvB,KAAKrP,OAAS,EAChD,IAAMkR,EACNA,EAEAd,EAA2CQ,EAC5CS,mBAAmBD,EAAyBD,GAEjDN,EAAUT,IAtBC,gCA2BjB,SAAUkB,KACuB,2BAAhCX,EAAgC,yBAAhCA,EAAgC,gBAEnC,OAAOF,GAAmB,WAAnB,GACH,CAAEC,wBAAwB,IADvB,OAEAC,IAIL,SAAUY,KAC6B,2BAAtCZ,EAAsC,yBAAtCA,EAAsC,gBAGzC,OAAOF,GAAmB,WAAnB,GACH,CAAEC,wBAAwB,IADvB,OAEAC,IAIL,SAAUa,KAC2B,2BAApCb,EAAoC,yBAApCA,EAAoC,gBAGvC,IAAME,EAAoCJ,GAAmB,WAAnB,GACtC,CAAEC,wBAAwB,IADY,OAEnCC,IAGP,OAAO,SAACC,GACJ,IADe,EACTvO,EAAsBuO,EAAQvO,MAChCmE,EAAgB,EAFL,KAGInE,GAHJ,IAGf,2BAA0B,KAAfoP,EAAe,QAChBC,EAA6Cd,EAC9CS,mBAD8C,WACvB7K,EADuB,KACbiL,GACtCZ,EAAUa,GACVlL,KAPW,gCAYhB,IAmFImL,GAnFEC,GAA+B,SAAChB,GACzC,IAAMvO,EAAgBuO,EAAQvO,MACzBA,GACDuO,EAAQvK,IAAI8I,GAAsB,qBAIpC,SAAU0C,GAAOC,GACnB,OAAO,SAAClB,GACJ,IAAMvO,EAAgBuO,EAAQvO,MAC1BA,IAAUyP,GACVlB,EAAQvK,IAAI8I,GAAsB,mBAAD,OAAoB2C,EAApB,QAKvC,SAAUC,GAAUA,GAEtB,OAAO,SAACnB,GACJ,IAAMvO,EAA6BuO,EAAQvO,MACvCA,EAAMrC,OAAS+R,GACfnB,EAAQvK,IAAI8I,GAAsB,6BAAD,OAA8B4C,EAA9B,gBA0CvC,SAAUC,GACZ3P,EACAwO,GAEA,IAAMD,EAAUhB,GAAkBqC,WAAW5P,GAG7C,OAFAwO,EAAUD,GAENA,EAAQJ,UACD,CACHA,UAAWI,EAAQJ,UACnBF,OAAQM,EAAQN,QAIjB,CACHE,WAAW,GAcnB,SAAS0B,GAA8BC,EAAsBC,GACzD,GAAKD,EAIL,OAAQA,EAAQpM,MAEZ,KAAK4L,GAAgBU,SACjB,IAAKF,EAAQ9P,MACT,MAAM,IAAIkG,MAAJ,+CAAkD6J,EAAlD,MAEV,MACJ,KAAKT,GAAgBW,QACjB,MAAM,IAAI/J,MAAJ,8DAAiE6J,EAAjE,MAEV,QACI,MAAM,IAAIhK,EAAsB+J,IAItC,SAAUI,GAAUlD,GACtB,IADkC,EAC5BxO,EAAmB,GACrB2R,EAAqC,KAErCJ,EAAgB,GAJc,KAKf/C,GALe,IAKlC,2BAAyB,KAAdoD,EAAc,QAErB,GADAL,GAAiBK,EACJ,MAATA,EACID,IACAN,GAA8BM,EAAgBJ,GAC9CvR,EAAOP,KAAKkS,EAAenQ,QAG/BmQ,EAAiB,CAAEzM,KAAM4L,GAAgBU,SAAUhQ,MAAO,SACvD,GAAa,MAAToQ,EACHD,IACAN,GAA8BM,EAAgBJ,GAC9CvR,EAAOP,KAAKkS,EAAenQ,QAG/BmQ,EAAiB,CAAEzM,KAAM4L,GAAgBW,QAASjQ,MAAO,SACtD,GAAa,MAAToQ,EAAc,CACrB,IAAKD,GAAkBA,EAAezM,OAAS4L,GAAgBW,QAC3D,MAAM,IAAI/J,MAAJ,wDAA2D6J,EAA3D,MAGV,IAAKI,EAAenQ,MAChB,MAAM,IAAIkG,MAAJ,+CAAkD6J,EAAlD,MAGVvR,EAAOP,KAAKkS,EAAenQ,OAC3BmQ,EAAiB,UAMjB,OAJKA,IACDA,EAAiB,CAAEzM,KAAM4L,GAAgBU,SAAUhQ,MAAO,KAGtDmQ,EAAezM,MAEnB,KAAK4L,GAAgBU,SACjBG,EAAenQ,OAASoQ,EACxB,MACJ,KAAKd,GAAgBW,QACjBE,EAAenQ,OAASoQ,EACxB,MACJ,QACI,MAAM,IAAIrK,EAAsBoK,KA9Cd,8BAwDlC,OALIA,IACAN,GAA8BM,EAAgBJ,GAC9CvR,EAAOP,KAAKkS,EAAenQ,QAGxBxB,EAGL,SAAU6R,GACZ5P,EACAuM,GAEA,IAFY,EAENsD,EAAWJ,GAAUlD,GACvBuD,EAAyB9P,EAHjB,KAIU6P,GAJV,IAIZ,2BAAgC,KAArBR,EAAqB,QAK5B,GAJIxD,GAAaiE,KACbA,EAAgBA,EAAcvQ,OAGL,WAAzB,GAAOuQ,KAA+BA,EACtC,MAAM,IAAIrK,MAAJ,8BAAiCqK,EAAjC,MAEVA,EAAiBA,EAAsBT,IAZ/B,8BAeZ,OAAOS,EAGL,SAAUC,GACZhH,EACA2D,GAC4E,6DAAzB,CAAEsD,iBAAiB,GAApEA,EAA0E,EAA1EA,gBAEMzD,EAAiBG,EAAjBH,KAAMD,EAAWI,EAAXJ,QACd,IAAKC,GAAiB,KAATA,EACT,OAAO,EAGX,IAAMvM,EAAkB4P,GAAU7G,EAAOwD,GACzC,QAAIV,GAAa7L,MACTA,EAAOiQ,YAAeD,IACtBhQ,EAAOkQ,kBAAoB5D,IAGxB,GAMT,SAAU6D,GACZ5Q,GAEA,IAAKA,EACD,OAAO,EAGX,GAAIsM,GAAatM,GACb,QAAIA,EAAM2Q,mBAGHC,GAAyB5Q,EAAMA,OACnC,GAAIuE,MAAMgI,QAAQvM,GAAQ,YACVA,GADU,IAC7B,2BAA0B,KAAfoP,EAAe,QAChByB,EAAwCD,GAAyBxB,GACvE,GAAIyB,EACA,OAAO,GAJc,oCAO1B,GAAqB,WAAjB,GAAO7Q,IACD,OAAVA,QACUqI,IAAVrI,EAEH,IAAK,IAAMU,KAAYV,EAAO,CAC1B,IAAM,EAAwC4Q,GAA0B5Q,EAAcU,IACtF,GAAI,EACA,OAAO,EAKnB,OAAO,EAGL,SAAUoQ,GACZC,EACAvC,GAEA,IAAMwC,EAAa,eACfvE,GAAUsE,IAGd,SAASE,IACL,OAAOrE,GAAYoE,GAGvB,SAASE,IACsE,6DAAxB,CAAET,iBAAiB,GAApEA,EAAyE,EAAzEA,gBAEF,IAAKjC,EACD,OAAO,EAGX,IAAM2C,EAA0BF,IAC1BG,EAAqCzB,GAASwB,EAAiB3C,GACrE,IAAK4C,EAAiBjD,UAClB,OAAO,EATgE,WAYvDiD,EAAiBnD,QAZsC,IAY3E,2BAA6C,KAAlCd,EAAkC,QACpCqD,GAAuBQ,EAAY7D,EAAO,CAAEsD,qBAC7CY,QAAQlE,MAAR,kDAAyDA,EAAMH,KAA/D,OAdmE,8BAkB3E,OAAO,EAGX,SAASsE,EAAWC,GAChB,IAAK,IAAM7Q,KAAY6Q,EAAY,CAC/B,IAAMzC,EAAgByC,EAAW7Q,GAC7BoO,IACCkC,EAAmBtQ,GAAYoO,GAIxCoC,IAGJ,MAAO,CACHF,aACAM,aACAL,WACAO,QAASN,IArNjB,SAAW5B,GACP,8BACA,6BAFJ,CAAWA,QAAe,KChbnB,IAAMmC,GAAc,eAAgB,CAEvCxQ,MAAO,CACHuI,MAAO,CACH7F,UAAU,IAIlB/B,MARuC,SAQjCX,GAEF,OAAO,WAEH,0BACU+E,KAAKC,UAAUhF,EAAMuI,MAAO,KAAM,SCflDkI,GAAmB,SACrBC,GAAoB,EAElB,SAAUC,KACZ,OAAOF,MAAcC,GAKnB,SAAUE,GACZpR,GAEA,IAAMjC,EAAiD,GACvD,IAAK,IAAMqQ,KAAgBpO,EACvBjC,EAAOqQ,GAAgB+C,KAE3B,OAAOpT,E,6rBCqBX,IAAM,GAA+BiQ,GACjC,CACIqD,IAAKvC,GACLwC,UAAW9C,GACPM,GACAC,GAAO,QAEXwC,SAAUzC,GACV0C,QAASxD,GAAc,CACnBrE,EAAGmF,GACH2C,EAAG3C,KAEP4C,MAAOjD,GACHQ,GAAU,GACVP,GACII,OAMH6C,GAAW,eAAgB,CAEpCxQ,MAFoC,WAGhC,IAAMyQ,EAAsB,CACxBP,IAAK,GACLC,UAAW,GACXC,SAAU,GACVC,QAAS,CACL7H,EAAG,GACH8H,EAAG,IAEPC,MAAO,IATV,EAYkCrB,GAAmBuB,EAAc,IAA5DrB,EAZP,EAYOA,WAAYM,EAZnB,EAYmBA,WAEdgB,EAAY,gBAAS,kBAAM1B,GAAyBI,MAEpD,EAAW,SAACO,GACdD,EAAWC,IAGTgB,EAAMV,GAAYQ,GAElBG,EAAS,gBAAI,GAtBlB,EAwByBvP,IAAlBX,EAxBP,EAwBOA,QAASY,EAxBhB,EAwBgBA,KAEjB,OAAO,WAAK,IAGJ4O,EAKAd,EALAc,IACAC,EAIAf,EAJAe,UACAC,EAGAhB,EAHAgB,SACAC,EAEAjB,EAFAiB,QACAE,EACAnB,EADAmB,MAGJ,2BACe,kBADf,qBAEmB,YAFnB,mBAGsB7P,GAHtB,mBAIwBY,EAAKT,MAJ7B,mBAKyBS,EAAKR,QAL9B,2BAQqB,SARrB,QASyB,kBAAM8P,EAAOxS,OAASwS,EAAOxS,QATtD,iEAa4B,CAAC,MAAO,OAAQ,OAAQ,SAAU,SAAU,SAbxE,mCAcuDwS,EAAOxS,OAd9D,kDAekC,GAflC,6CAgByBsS,EAAUtS,MAAQ,aAAe,cAhB1D,eAiBmCuS,EAAIT,IAjBvC,MAiBmD,OAjBnD,yCAmBgCS,EAAIT,IAnBpC,MAoBmCA,EApBnC,SAqBsC,SAACW,GAAD,OAAiB,EAAS,CAAEX,IAAKW,MArBvE,+DA0BmCF,EAAIR,UA1BvC,MA0ByD,cA1BzD,yCA4BgCQ,EAAIR,UA5BpC,MA6BmCA,EA7BnC,SA8BsC,SAACU,GAAD,OAAiB,EAAS,CAAEV,UAAWU,MA9B7E,+DAmCmCF,EAAIP,SAnCvC,MAmCwD,aAnCxD,yCAqCgCO,EAAIP,SArCpC,MAsCmCA,EAtCnC,SAuCsC,SAACS,GAAD,OAAiB,EAAS,CAAET,SAAUS,MAvC5E,iEA6C+BR,EA7C/B,SA8CkC,SAACQ,GAAD,OAAkB,EAAS,CAAER,QAASQ,MA9CxE,6CAkD6CN,EAAMxB,mBAlDnD,iBAmDqBwB,EAAMnS,MAAMyE,KAAI,SAACC,EAAGjH,GACjB,sBAAuB8U,EAAIJ,MAAJ,WAAgB1U,GAAvC,sBAA4DA,EAA5D,+CAEY8U,EAAIJ,MAAJ,WAAgB1U,GAF5B,MAGeiH,EAHf,SAIkB,SAAC+N,GACPN,EAAMnS,MAAMvC,GAAKgV,EACjB,EAAS,CAAEN,MAAOA,MAN9B,2DApDxB,sBAkE6B,SAlE7B,QAmEiC,WACLA,EAAMnS,MAAM/B,KAAKuO,GAAiB,KAClC2F,EAAMzB,YAAa,EACnB,EAAS,CAAEyB,MAAOA,MAtE9C,mGA6EmB,WA7EnB,kBA8EgCnB,GA9EhC,0BAuFC,GAAgB,eAAgB,CACzC/P,MAAO,CACHuF,GAAIhF,OACJxB,MAAO,CACHkB,KAAMtD,OACN+F,UAAU,GAEdtC,SAAUC,SACVoR,UAAW,CACPxR,KAAMC,QACNwC,UAAU,IAIlB/B,MAdyC,SAcnCX,GACF,IAAMI,EAAW,SAACQ,GACVZ,EAAMI,UACNJ,EAAMI,SAAS,CACXrB,MAAQ6B,EAAKC,OAA4B9B,MACzC0Q,YAAY,KAKxB,OAAO,WAAK,MAC6BzP,EAAMjB,MAAnCA,EADA,EACAA,MAAO2Q,EADP,EACOA,kBACXhH,EAAkB,cAItB,OAHIgH,IACAhH,GAAW,uBAEf,uCAGgB1I,EAAMuF,GAHtB,KAIiB,OAJjB,MAKmBmD,EALnB,MAMmB3J,EANnB,SAOsBqB,EAPtB,OAQoBA,EARpB,IASiB,SAACsR,GACE1R,EAAMyR,WAAaC,GAClBA,EAA2BC,UAXhD,4DAgBiCjC,GAhBjC,uBAuBCkC,GAAc,eAAgB,CACvC5R,MAAO,CACHjB,MAAO,CACHkB,KAAMtD,OACN+F,UAAU,GAEdtC,SAAUC,UAGdM,MATuC,SASjCX,GAEF,IAAMsR,EAAMV,GAAY5Q,EAAMjB,MAAMA,OAF7B,EAImBiD,IAAlBX,EAJD,EAICA,QAASY,EAJV,EAIUA,KAEX,EAAW,SAAC4P,GACd,GAAI7R,EAAMI,SAAU,CAChB,IAAM0R,EAAW,GAAH,MAAO9R,EAAMjB,MAAMA,OAAU8S,GAC3C7R,EAAMI,SAAS,CAAErB,MAAO+S,EAAUrC,WAAYzP,EAAMjB,MAAM0Q,eAIlE,OAAO,WAAK,MAMJzP,EAJAjB,MACIA,EAHA,EAGAA,MACA2Q,EAJA,EAIAA,kBAIAvG,EAASpK,EAAToK,EAAG8H,EAAMlS,EAANkS,EAEX,2CAEiCvB,GAFjC,gCAIuB4B,EAAInI,EAJ3B,MAIqC,KAJrC,6CAKsB9H,GALtB,mBAMwBY,EAAKT,MAN7B,oBAM6CS,EAAKR,QANlD,mBASoB6P,EAAInI,EATxB,SAU0B,SAACqI,GAAD,OAAiB,EAAS,CAAErI,EAAGqI,KAVzD,MAWuBrI,GAXvB,+DAgBuBmI,EAAIL,EAhB3B,MAgBqC,KAhBrC,yCAkBoBK,EAAIL,EAlBxB,SAmB0B,SAACO,GAAD,OAAiB,EAAS,CAAEP,EAAGO,KAnBzD,MAoBuBP,GApBvB,sD,6sDCtPZ,IAAMc,GAAiB,gBAEvB,SAASC,GAA2B3Q,GAChC,MAAOA,EAAQ4Q,cAAe,CAC1B,IAAMC,EAAS7Q,EAAQ8Q,WAEjBC,EAAsCxS,OAAOmE,iBAAiBmO,GACpE,GAAIH,GAAeM,KAAKD,EAAeE,SAAWF,EAAeG,UAAYH,EAAeI,WACxF,OAAON,EAGX7Q,EAAU6Q,EAEd,OAAOO,SAASC,iBAGpB,IAAMC,GAAuB,GACvBC,GAAe,GAEjBC,IAA8B,EAErBC,GAAY,eAAgB,CACrC9S,MAAO,CACH+S,QAAS,CACL9S,KAAMI,UAEV2S,OAAQ,CACJ/S,KAAMI,UAEV4S,OAAQ,CACJhT,KAAMI,WAIdM,MAbqC,SAa/BX,EAb+B,GAaf,IAAPuD,EAAO,EAAPA,MACL2P,EAAa,gBAAI,GACjBC,EAAgB,gBAAI,GACpBC,EAAe,gBAAI,GACnBC,EAAoB,eAAS,CAC/B5P,GAAI,EACJmE,GAAI,IAGF0L,EAAc,eAAS,CACzB7P,GAAI,EACJmE,GAAI,IAGF2L,EAAoB,eAAS,CAC/B9P,GAAI,EACJmE,GAAI,IAEF4L,EAAkB,eAAwB,MAE1CC,EAAoB,oBAAwBrM,GAE5CsM,EAAiB,SAAC,GAAoC,IAAnCjQ,EAAmC,EAAnCA,EAAGmE,EAAgC,EAAhCA,EACxB,OAAO+L,KAAKC,IAAInQ,IAAM,GAAKkQ,KAAKC,IAAIhM,IAAM,GAG9C,SAASiM,EAASjT,GAAgB,WACVA,EAAKkT,gBADK,IAC9B,2BAAyC,KAA9BC,EAA8B,QACrC,GAAIA,EAAMC,aAAeP,EAAkB1U,MACvC,OAAOgV,GAHe,+BAUlC,SAASE,EAAYrT,GACjB,IAAMsT,EAAW,CACbzQ,EAAG7C,EAAKuT,MAAQd,EAAkB5P,EAClCmE,EAAGhH,EAAKwT,MAAQf,EAAkBzL,GAQtC,OALI4L,EAAgBzU,OAASyU,EAAgBzU,QAAU0T,SAASC,mBAC5DwB,EAAStM,GAAK4L,EAAgBzU,MAAMsV,UAAYd,EAAkB3L,EAClEsM,EAASzQ,GAAK+P,EAAgBzU,MAAMuV,WAAaf,EAAkB9P,GAGhEyQ,EAGX,SAASK,EAAkB3T,EAAe4T,GACtC,IAAI3B,KAGJA,IAAqB,GACjBK,EAAWnU,OAAf,CAII,eAAgByV,IAChBf,EAAkB1U,MAAQyV,EAAYR,YAG1C,IAAM3S,EAAUT,EAAK6T,cACrBjB,EAAgBzU,MAAQiT,GAA2B3Q,GAEnDiS,EAAY7P,EAAIpC,EAAQqT,WACxBpB,EAAY1L,EAAIvG,EAAQsT,UAEpBnB,EAAgBzU,QAChBwU,EAAkB9P,EAAI+P,EAAgBzU,MAAMuV,WAC5Cf,EAAkB3L,EAAI4L,EAAgBzU,MAAMsV,WAGhDhB,EAAkB5P,EAAI+Q,EAAYL,MAClCd,EAAkBzL,EAAI4M,EAAYJ,MAElCjB,EAAcpU,OAAQ,GAG1B,SAAS6V,EAAYhU,GACG,IAAhBA,EAAKiU,SAGTjU,EAAKkU,iBACLP,EAAkB3T,EAAMA,GACxBmU,KAGJ,SAASC,EAAkBpU,GACvB,GAAKuS,EAAcpU,MAAnB,CAIA,IAAMmV,EAAWD,EAAYrT,GAE7B,IAAKsS,EAAWnU,OACR2U,EAAeQ,GAAW,CAC1Bd,EAAarU,OAAQ,EACrBmU,EAAWnU,OAAQ,EACnB,IAAMkW,EAAiBxC,SAASyC,cAC5BD,GAAkB,SAAUA,GAC3BA,EAA+BE,OAGhCnV,EAAM+S,SACN/S,EAAM+S,QAAQ,CAAEmB,WAAU1L,OAAQ8K,IAK9C,GAAIJ,EAAWnU,MAAO,CAClB,GAAIyU,EAAgBzU,MAAO,CACvB,IAAMqW,EAAW5B,EAAgBzU,MAE7BqW,IAAa3C,SAASC,kBAClB9R,EAAKwT,MAAQgB,EAAST,UAAYhC,GAClCyC,EAASf,UAAYe,EAASf,UAAYzB,GAClCwC,EAAST,UAAYS,EAASvO,aAAgBjG,EAAKwT,MAAQzB,KACnEyC,EAASf,UAAYe,EAASf,UAAYzB,IAG1ChS,EAAKuT,MAAQiB,EAASV,WAAa/B,GACnCyC,EAASd,WAAac,EAASd,WAAa1B,GACpCwC,EAASV,WAAaU,EAASC,YAAezU,EAAKuT,MAAQxB,KACnEyC,EAASd,WAAac,EAASd,WAAa1B,MAG5ChS,EAAKwT,MAAQgB,EAASf,UAAY1B,GAClCyC,EAASf,UAAYe,EAASf,UAAYzB,GACnCwC,EAASvO,cAAgBjG,EAAKwT,MAAQgB,EAASf,WAAa1B,KACnEyC,EAASf,UAAYe,EAASf,UAAYzB,IAG1ChS,EAAKuT,MAAQiB,EAASd,WAAa3B,GACnCyC,EAASd,WAAac,EAASd,WAAa1B,GACrCwC,EAASC,aAAezU,EAAKuT,MAAQiB,EAASd,YAAc3B,KACnEyC,EAASd,WAAac,EAASd,WAAa1B,KAKpD5S,EAAMgT,QACNhT,EAAMgT,OAAO,CAAEkB,WAAU1L,OAAQ8K,MAK7C,SAASgC,EAAY1U,GACbsS,EAAWnU,OACX6B,EAAKkU,iBAETE,EAAkBpU,GAGtB,SAAS2U,EAAgB3U,GAGrB,GAFAuS,EAAcpU,OAAQ,EAElBmU,EAAWnU,MAAO,CAClB,IAAMmV,EAAWD,EAAYrT,GAEzBZ,EAAMiT,QACNjT,EAAMiT,OAAO,CAAEiB,WAAU1L,OAAQ8K,IAIzCJ,EAAWnU,OAAQ,EACnBuU,EAAY7P,GAAK,EACjB6P,EAAY1L,GAAK,EACjB2L,EAAkB9P,GAAK,EACvB8P,EAAkB3L,GAAK,EACvByL,EAAkB5P,GAAK,EACvB4P,EAAkBzL,GAAK,EACvB6L,EAAkB1U,WAAQqI,EAC1BoM,EAAgBzU,MAAQ,KAExBiI,YAAW,kBAAMoM,EAAarU,OAAQ,KACtC8T,IAAqB,EAGzB,SAAS2C,EAAU5U,GACf2U,EAAgB3U,GAChB6U,IAGJ,SAASC,EAAa9U,GAClB2T,EAAkB3T,EAAMA,EAAKkT,eAAe,IAC5C6B,IAGJ,SAASC,EAAYhV,GACjB,IAAMmT,EAAQF,EAASjT,GAClBmT,IAGLiB,EAAkBjB,GAEdb,EAAWnU,OACX6B,EAAKkU,kBAIb,SAASe,EAAWjV,GAChB,IAAMmT,EAAQF,EAASjT,GAClBmT,IAGLwB,EAAgBxB,GAChB0B,KAGJ,SAASV,IACLnV,OAAOkW,iBAAiB,YAAaR,GACrC1V,OAAOkW,iBAAiB,UAAWN,GAGvC,SAASC,IACL7V,OAAOmW,oBAAoB,YAAaT,GACxC1V,OAAOmW,oBAAoB,UAAWP,GAG1C,SAASG,IAGL/V,OAAOkW,iBAAiB,YAAaF,EAAa,CAAEI,SAAS,IAC7DpW,OAAOkW,iBAAiB,WAAYD,GAGxC,SAASI,IACLrW,OAAOmW,oBAAoB,YAAaH,GACxChW,OAAOmW,oBAAoB,WAAYF,GAQ3C,SAASK,EAAYC,GAEjB,OAAO,SAACvV,GACAwS,EAAarU,MACb6B,EAAKkU,iBAGLqB,GACAA,EAAgBvV,IAK5B,OAlBA,gBAAgB,WACZ6U,IACAQ,OAgBG,WACH,IAAM7M,EAAoB7F,EAAMpD,SAAWoD,EAAMpD,WAAa,GAE9D,GAAwB,IAApBiJ,EAAS1M,OACT,MAAM,IAAIuI,MAAM,kCAGpB,IAAMmR,EAAehN,EAAS,GAK9B,OAJAgN,EAAMpW,MAAQoW,EAAMpW,OAAS,GAC7BoW,EAAMpW,MAAMqW,YAAczB,EAC1BwB,EAAMpW,MAAMsW,aAAeZ,EAC3BU,EAAMpW,MAAMuW,QAAUL,EAAYE,EAAMpW,MAAMuW,SACvCH,MAKNI,GAAqB,eAAgB,CAC9C7V,MAD8C,SACxC2I,EADwC,GAC5B,IAAP/F,EAAO,EAAPA,MAEDkT,EAAY,eAAI,GAChBC,EAAY,eAAI,GAEhBjT,EAAI,eAAIgT,EAAU1X,OAClB6I,EAAI,eAAI8O,EAAU3X,OAExB,SAASgU,EAAQnS,GACb6C,EAAE1E,MAAQ0X,EAAU1X,MAAQ6B,EAAKsT,SAASzQ,EAC1CmE,EAAE7I,MAAQ2X,EAAU3X,MAAQ6B,EAAKsT,SAAStM,EAG9C,SAASoL,EAAOpS,GACZ6C,EAAE1E,MAAQ0X,EAAU1X,MAAQ6B,EAAKsT,SAASzQ,EAC1CmE,EAAE7I,MAAQ2X,EAAU3X,MAAQ6B,EAAKsT,SAAStM,EAG9C,SAASqL,EAAOrS,GACZ6C,EAAE1E,MAAQ0X,EAAU1X,MAAQ6B,EAAKsT,SAASzQ,EAC1CmE,EAAE7I,MAAQ2X,EAAU3X,MAAQ6B,EAAKsT,SAAStM,EAC1C6O,EAAU1X,MAAQ0E,EAAE1E,MACpB2X,EAAU3X,MAAQ6I,EAAE7I,MAGxB,OAAO,WAEH,IAAMmJ,EAAuB,CACzByO,SAAU,WACV1O,IAAK,GAAF,OAAKL,EAAE7I,MAAP,MACH6X,KAAM,GAAF,OAAKnT,EAAE1E,MAAP,OAGFqK,EAAoB7F,EAAMpD,SAAWoD,EAAMpD,WAAa,GAE9D,GAAwB,IAApBiJ,EAAS1M,OACT,MAAM,IAAIuI,MAAM,kCAGpB,IAAMmR,EAAehN,EAAS,GAM9B,OALAgN,EAAMpW,MAAQoW,EAAMpW,OAAS,GAC7BoW,EAAMpW,MAAMkI,MAAZ,SAAwBkO,EAAMpW,MAAMkI,OAAUA,GAC9CkO,EAAMS,aAAeT,EAAMS,cAAgB,GAC3CT,EAAMS,aAAa7Z,KAAK,SAExB,mBAEiB+V,EAFjB,OAGgBC,EAHhB,OAIgBC,GAJhB,2BAMSmD,MANT,qCCxWCU,GAAe,eAAgB,CACxC9W,MAAO,CACH2D,MAAO,CACH1D,KAAMqD,MACNZ,UAAU,GAEdqU,SAAU,CACN9W,KAAMI,SACNqC,UAAU,GAEdsU,eAAgB,CACZ/W,KAAMI,SACNqC,UAAU,GAEduU,YAAa,CACThX,KAAMI,SACNqC,UAAU,IAIlB/B,MApBwC,SAoBlCX,GACF,IAAMkX,EAAY,eAAS,CACvBC,mBAAoB,EACpBC,kBAAmB,EACnBlD,SAAU,CAAEzQ,EAAG,EAAGmE,EAAG,GACrBY,OAAQ,CAAE/E,EAAG,EAAGmE,EAAG,KAGjByP,EAAgB,gBAClB,kBAAMrX,EAAM2D,MAAMH,KAAI,kBAAM,eAAwB,YAGxD,SAAS8T,EAAoBH,EAA2BvW,GACpD,IAAM2W,EAAaF,EAActY,MACjC,GAA0B,IAAtBwY,EAAW7a,OACX,OAAO,EAGX,IAAK,IAAIF,EAAI,EAAGA,EAAI+a,EAAW7a,OAAQF,IACnC,GAAIA,IAAM2a,EAAV,CAIA,IAAMK,EAAqCD,EAAW/a,GAAGuC,MAEzD,GAAKyY,EAAL,CAIA,IAAMC,EAAoBD,EAAe7C,UACzC,GAAI/T,EAAK4H,OAAOZ,EAAIhH,EAAKsT,SAAStM,EAAI6P,EAClC,OAAOjb,GAIf,OAAO+a,EAAW7a,OAGtB,SAAS,EAAQwG,EAAetC,GAC5BsW,EAAUC,kBAAoBjU,EAC9BgU,EAAUE,iBAAmBE,EAAoBpU,EAAOtC,GACxDsW,EAAUhD,SAAWtT,EAAKsT,SAC1BgD,EAAU1O,OAAS5H,EAAK4H,OAG5B,SAAS,EAAOtF,EAAetC,GAC3BsW,EAAUhD,SAAWtT,EAAKsT,SAC1BgD,EAAUE,iBAAmBE,EAAoBpU,EAAOtC,GAG5D,SAAS,EAAOsC,EAAetC,GAC3B,IAAMwW,EAAmBE,EAAoBpU,EAAOtC,GAMpD,GALAsW,EAAUC,mBAAqB,EAC/BD,EAAUE,kBAAoB,EAC9BF,EAAUhD,SAAW,CAAEzQ,EAAG,EAAGmE,EAAG,GAChCsP,EAAU1O,OAAS,CAAE/E,EAAG,EAAGmE,EAAG,GAE1B1E,IAAUkU,EAAkB,CAC5B,IAAMM,EAAWN,GAAoBlU,EAC/BkU,EAAmB,EACnBA,EAENpX,EAAMgX,eAAehX,EAAM2D,MAAMT,GAAQwU,EAAUxU,IAI3D,SAASyU,EAAWzU,EAAeiL,GAC/B,IAAMjG,EAAuB,CACzB0P,QAAS,MACTC,OAAQ,sBACRC,aAAc,MACdC,gBAAiB,SAGrB,GAAI7U,IAAUgU,EAAUC,kBAAmB,CACvCjP,EAAMyO,SAAW,WADsB,IAE/BnO,EAAqB0O,EAArB1O,OAAQ0L,EAAagD,EAAbhD,SAChBhM,EAAMD,IAAN,UAAeO,EAAOZ,EAAIsM,EAAStM,EAAnC,MACAM,EAAM0O,KAAN,UAAgBpO,EAAO/E,EAAIyQ,EAASzQ,EAApC,MACAyE,EAAM1G,MAAQ,OAGlB,sBACoBxB,EAAMiX,YAAY9I,GADtC,QAEiB,SAACvN,GAAD,OAAU,EAAQsC,EAAOtC,IAF1C,OAGgB,SAACA,GAAD,OAAU,EAAOsC,EAAOtC,IAHxC,OAIgB,SAACA,GAAD,OAAU,EAAOsC,EAAOtC,KAJxC,4CAOiByW,EAActY,MAAMmE,GAPrC,MAOoDgF,GAPpD,CAQalI,EAAM+W,SAAS5I,EAAMjL,IARlC,uCAcJ,SAAS8U,IACL,0BACe,CAAEJ,QAAS,MAAOC,OAAQ,sBAAuBC,aAAc,MAAOC,gBAAiB,cADtG,yBAOJ,SAASE,IAGL,IAFA,IAAMC,EAA0B,GACvBd,EAAqBF,EAArBE,iBACA5a,EAAI,EAAGA,EAAIwD,EAAM2D,MAAMjH,OAAQF,IAChC4a,IAAqB5a,GACrB0b,EAASlb,KAAKgb,KAGlBE,EAASlb,KAAK2a,EAAWnb,EAAGwD,EAAM2D,MAAMnH,KAO5C,OAJI4a,IAAqBpX,EAAM2D,MAAMjH,QACjCwb,EAASlb,KAAKgb,KAGXE,EAGX,OAAO,WACH,0BACe,CAAEC,UAAW,OAAQnU,YAAa,EAAGoU,OAAQ,MAAOzB,SAAU,aAD7E,CAESsB,UCtJRI,GAAiB,eAAgB,CAC1CrY,MAAO,CACHjB,MAAO,CACHkB,KAAMtD,OACN+F,UAAU,GAEdtC,SAAU,CACNH,KAAMI,WAIdM,MAX0C,SAWpCX,GAEF,IAAMsY,EAAY,gBAAI,GAEtB,SAASC,IACLD,EAAUvZ,OAAQ,EAGtB,SAASqB,EAASoY,GACVxY,EAAMI,UACNJ,EAAMI,SAASoY,GAEnBF,EAAUvZ,OAAQ,EAGtB,OAAO,WACH,OAAIuZ,EAAUvZ,MACV,sBAEmB,EAFnB,MAGeiB,EAAMjB,MAHrB,SAIkBqB,GAJlB,6BAQA,2CAEuBmY,EAFvB,MAE4C,CAAEE,QAAS,UAFvD,CAEmEzY,EAAMjB,MAAMA,OAAS,cAFxF,+BAGiCiB,EAAMjB,MAAM2Q,mBAH7C,uB,q7CCnBhB,IAAMgJ,GAAW,eAAgB,CAC7B/X,MAD6B,WACxB,MAEyCkP,GACtC,CACI,CACItK,GAAI,EACJoT,QAAS,OAEb,CACIpT,GAAI,EACJoT,QAAS,OAEb,CACIpT,GAAI,EACJoT,QAAS,SAEb,CACIpT,GAAI,EACJoT,QAAS,QAEb,CACIpT,GAAI,EACJoT,QAAS,QAEb,CACIpT,GAAI,EACJoT,QAAS,OAEb,CACIpT,GAAI,EACJoT,QAAS,SAEb,CACIpT,GAAI,EACJoT,QAAS,SAEb,CACIpT,GAAI,EACJoT,QAAS,QAEb,CACIpT,GAAI,GACJoT,QAAS,OAEb,CACIpT,GAAI,GACJoT,QAAS,UAEb,CACIpT,GAAI,GACJoT,QAAS,WAGjB1K,GACIC,GACIV,GAAc,CACVmL,QAASrK,QAtDL3K,EAFnB,EAEOoM,WAAmBM,EAF1B,EAE0BA,WA4D3B,SAASsH,EACLxJ,EACAjL,GAEA,wBAEeiL,EAAKpP,MAAM4Z,QAF1B,SAGkB,SAACH,GACP,IAAMI,EAAcjV,EAAMT,GAC1B0V,EAAY7Z,MAAM4Z,QAAlB,MAAgCH,GAChC,IAAMK,EAAa,GACnBA,EAAW3V,GAAS0V,EACpBvI,EAAWwI,KARvB,6BAcJ,SAAS7B,EAAe1N,EAAsCoO,EAAkBoB,GAC5EnV,EAAM/F,OAAN,MAAA+F,EAAK,CAAQ+T,EAAU,GAAlB,UAAwB/T,EAAM/F,OAAOkb,EAAU,MAGxD,SAAS7B,EAAY9I,GACjB,OAAOA,EAAKpP,MAAMwG,GAAGxG,MAAOga,WAGhC,OAAO,WAEH,+CAEoB,CAAEC,UAAW,QAAS1G,SAAU,SAFpD,kBAIuB3O,EAJvB,SAK0BgU,EAL1B,eAMgCX,EANhC,YAO6BC,GAP7B,oEAgBCgC,GAAW,eAAgB,CACpCtY,MADoC,WAEhC,OAAO,WACH,yGAK2B,iBAL3B,wEASwB,CAAEa,MAAO,QAASC,OAAQ,QAASsW,gBAAiB,gBAT5E,+DAWgC,CAAEvW,MAAO,OAAQC,OAAQ,OAAQsW,gBAAiB,YAXlF,sBC9HNmB,GAA2B,CAC/B,CACEnN,KAAM,IACNzN,KAAM,OACN6a,UAAWC,IAEb,CACErN,KAAM,SACNzN,KAAM,QACN6a,UAAWE,IAEb,CACEtN,KAAM,aACNzN,KAAM,WACN6a,UAAWhI,IAEb,CACEpF,KAAM,YACNzN,KAAM,WACN6a,UAAWF,KAITK,GAAS,eAAa,CAC1BC,QAAS,iBACTL,YAGa,MC5BA,I,8BAAA,eAAgB,CAC7BvY,MAD6B,WAG3B,OAAO,WAEL,4CAEY,qBAFZ,uBAGY,WAHZ,iEAKY,OALZ,mBAMqB,KANrB,6EAOqB,UAPrB,iEAQqB,cARrB,qEASqB,aATrB,oFCPN,eAAU,IAAK6Y,IAAI,IAAQC,MAAM,S,qBCJjCxb,EAAOD,QAAU,IAA0B,yB","file":"js/app.9430c085.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import \"@/styles/components/custom-checkbox.less\";\r\nimport { defineComponent, PropType } from \"vue\";\r\nexport const Checkbox = defineComponent({\r\n props: {\r\n value: {\r\n type: Boolean,\r\n default: false\r\n },\r\n onChange: Function as PropType<(newValue: boolean) => void>,\r\n text: String,\r\n ellipse: {\r\n type: Boolean,\r\n default: false\r\n },\r\n transparent: {\r\n type: Boolean,\r\n default: false\r\n },\r\n enabled: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n\r\n const onChange = (args: Event) => {\r\n if (props.onChange) {\r\n props.onChange((args.target as HTMLInputElement).checked);\r\n }\r\n };\r\n\r\n return () => (\r\n \r\n );\r\n }\r\n});\r\n\r\n","import { ref, onMounted, watchEffect, reactive } from 'vue';\r\n\r\nexport type SizeInformation = {\r\n width: number;\r\n height: number;\r\n};\r\n\r\n// We use a single instance as apparently it is better for performance,\r\n// to still be able to use it as individual \"hooks\", we have a weak map\r\n// to map the global handler to the individual handlers.\r\ntype ResizeCallback = (size: SizeInformation) => void;\r\nconst watcherMap = new WeakMap();\r\nconst resizeObserver = new ResizeObserver(\r\n (entries) => {\r\n for (const entry of entries) {\r\n const element: Element = entry.target;\r\n const callback: ResizeCallback | undefined = watcherMap.get(element);\r\n if (callback) {\r\n const { width, height } = entry.contentRect;\r\n callback({width, height});\r\n }\r\n }\r\n }\r\n);\r\n\r\nfunction register(element: Element, callback: ResizeCallback) {\r\n watcherMap.set(element, callback);\r\n resizeObserver.observe(element);\r\n}\r\n\r\nfunction unregister(element: Element) {\r\n watcherMap.delete(element);\r\n resizeObserver.unobserve(element);\r\n}\r\n\r\nexport function useResizeObserver() {\r\n const size = reactive({\r\n width: 0,\r\n contentWidth: 0,\r\n height: 0,\r\n contentHeight: 0\r\n } as SizeInformation);\r\n\r\n const element = ref(null);\r\n\r\n const onResize: ResizeCallback = (newSize: SizeInformation) => {\r\n size.width = newSize.width;\r\n size.height = newSize.height;\r\n };\r\n\r\n onMounted(() => {\r\n watchEffect((onInvalidate ) => {\r\n const setElement: Element | null = element.value;\r\n if (!setElement) {\r\n return;\r\n }\r\n register(setElement, onResize);\r\n \r\n onInvalidate(() => unregister(setElement));\r\n });\r\n });\r\n\r\n return {\r\n element,\r\n size\r\n };\r\n}","import { defineComponent, PropType } from 'vue';\r\n\r\nexport type IconKind = \"cross\";\r\n\r\nexport const ActionIcon = defineComponent({\r\n props: {\r\n kind: {\r\n type: String as PropType,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n\r\n return () => {\r\n return (\r\n \r\n );\r\n };\r\n }\r\n});","import \"@/styles/components/actionbar.less\";\r\nimport { defineComponent, reactive, provide, inject, readonly, PropType, watch, computed, ref } from 'vue';\r\nimport { useResizeObserver } from '@/infrastructure/sizing';\r\nimport { ActionIcon, IconKind } from './ActionIcon';\r\n\r\nconst ActionBarSymbol = Symbol(\"GlobalActionBar\");\r\n\r\nexport const provideActionBar = (actionBar: IActionBar) => provide(ActionBarSymbol, actionBar);\r\n\r\nexport const injectActionBar = () => inject(ActionBarSymbol);\r\n\r\nexport interface IActionBar {\r\n add(action: IAction): void;\r\n remove(action: IAction): void;\r\n}\r\n\r\nexport type IAction = string;\r\n\r\nexport function useActionBar() {\r\n\r\n const actions = ref([] as IAction[]);\r\n\r\n const add = (action: IAction) => {\r\n actions.value = [...actions.value, action];\r\n };\r\n\r\n const remove = (action: IAction) => {\r\n const index: number = actions.value.indexOf(action);\r\n if (index === -1) {\r\n return;\r\n }\r\n\r\n const copy = [...actions.value];\r\n copy.splice(index, 1);\r\n actions.value = copy;\r\n };\r\n\r\n const actionBar: IActionBar = {\r\n add,\r\n remove\r\n };\r\n\r\n return {\r\n actionBar,\r\n actions: readonly(actions)\r\n };\r\n}\r\n\r\nexport const ActionBar = defineComponent({\r\n props: {\r\n actions: {\r\n type: Array as PropType,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props, { slots }) {\r\n return () => {\r\n return (\r\n <>\r\n
    \r\n {props.actions.map((x, i) => (
  • {x}
  • ))}\r\n
\r\n { slots.default && slots.default() }\r\n \r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const SomeBar = defineComponent({\r\n props: {\r\n items: {\r\n type: Array as PropType,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n const { element, size } = useResizeObserver();\r\n\r\n const itemSizes = reactive([] as { width: number; height: number;}[]);\r\n\r\n const mutatedItems = computed(\r\n () => {\r\n let remainingAvailableWidth = size.width;\r\n if (element.value) {\r\n const { paddingLeft, paddingRight } = window.getComputedStyle(element.value);\r\n remainingAvailableWidth -= (parseFloat(paddingLeft) + parseFloat(paddingRight));\r\n }\r\n \r\n const sizesMap = itemSizes;\r\n return props.items.map((x, i) => {\r\n const itemSize = sizesMap[i] ? sizesMap[i] : { width: 0, height: 0 };\r\n remainingAvailableWidth -= itemSize.width;\r\n return {\r\n name: x,\r\n isResponsive: remainingAvailableWidth >= 0\r\n };\r\n });\r\n }\r\n );\r\n\r\n watch(itemSizes, (n,ol) => {\r\n // console.log(\"from to\", ol, n);\r\n });\r\n\r\n const onSize = (index: number, size: { width: number; height: number; }) => {\r\n itemSizes[index] = size;\r\n };\r\n\r\n return () => {\r\n return(\r\n
    \r\n
  • \r\n
      \r\n {mutatedItems.value\r\n .filter(x => x.isResponsive)\r\n .map((x, i) => (\r\n onSize(i, size)} />\r\n )\r\n )}\r\n
    \r\n
  • \r\n
  • \r\n \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
        \r\n
      • \r\n
      • \r\n
          \r\n
        • \r\n
        \r\n
        \r\n
        \r\n
      • \r\n
      • \r\n
          \r\n
        • \r\n
        \r\n );\r\n };\r\n }\r\n});\r\n\r\nconst RegularItem = defineComponent({\r\n props: {\r\n title: {\r\n type: String,\r\n required: true\r\n },\r\n icon: {\r\n type: String as PropType,\r\n required: true\r\n },\r\n onSizeChanged: {\r\n type: Function as PropType<(size: { width: number; height: number;}) => void>,\r\n required: true\r\n }\r\n },\r\n\r\n setup (props) {\r\n\r\n const {element, size } = useResizeObserver();\r\n\r\n watch(\r\n size,\r\n (newSize) => {\r\n props.onSizeChanged(newSize);\r\n }\r\n );\r\n\r\n return () => {\r\n\r\n return (\r\n
      • \r\n {props.title}\r\n
      • \r\n );\r\n };\r\n }\r\n});\r\n\r\nconst DropdownItem = defineComponent({\r\n props: {\r\n title: {\r\n type: String,\r\n required: true\r\n },\r\n icon: {\r\n type: String as PropType,\r\n required: true\r\n }\r\n },\r\n\r\n setup (props) {\r\n return () => {\r\n\r\n return (\r\n
      • \r\n \r\n {props.title}\r\n \r\n \r\n
        \r\n
        \r\n
          \r\n { /* TODO WJG */}\r\n
        \r\n
        \r\n
        \r\n
      • \r\n );\r\n };\r\n }\r\n});\r\n\r\nconst AlternativeDropdownItem = defineComponent({\r\n props: {\r\n title: {\r\n type: String,\r\n required: true\r\n },\r\n icon: {\r\n type: String as PropType,\r\n required: true\r\n }\r\n },\r\n\r\n setup (props) {\r\n return () => {\r\n\r\n return (\r\n
      • \r\n \r\n
        {props.title}
        \r\n
        \r\n
        \r\n \r\n
        \r\n
        \r\n
        \r\n
        \r\n
          \r\n { /* TODO WJG */}\r\n
        \r\n
        \r\n
        \r\n
      • \r\n );\r\n };\r\n }\r\n});\r\n\r\nconst SearchItem = defineComponent({\r\n\r\n setup (props) {\r\n\r\n return () => {\r\n return (\r\n
      • \r\n
        \r\n \r\n
        \r\n
      • \r\n );\r\n };\r\n }\r\n});\r\n\r\nconst SomeBarItem = defineComponent({\r\n props: {\r\n onSizeChanged: {\r\n type: Function as PropType<(size: { width: number; height: number;}) => void>,\r\n required: true\r\n }\r\n },\r\n\r\n setup (props, { slots }) {\r\n\r\n const {element, size } = useResizeObserver();\r\n\r\n watch(\r\n size,\r\n (newSize) => {\r\n props.onSizeChanged(newSize);\r\n }\r\n );\r\n\r\n return () => {\r\n return (\r\n
      • \r\n { slots.default && slots.default() }\r\n
      • \r\n );\r\n };\r\n }\r\n})","\r\nexport class UnreachableValueError extends Error {\r\n constructor(value: never) {\r\n super(`Unreachable value '${JSON.stringify(value)}'`);\r\n }\r\n}","import \"@/styles/components/alertbar.less\";\r\nimport {\r\n defineComponent,\r\n PropType,\r\n reactive,\r\n readonly,\r\n watch,\r\n ref,\r\n Ref\r\n} from \"vue\";\r\nimport { UnreachableValueError } from './misc';\r\n\r\nexport enum AlertKind {\r\n Info = 0,\r\n Success = 1,\r\n Warning = 2,\r\n Error = 3\r\n}\r\n\r\nexport type IAlert = {\r\n id: number;\r\n content: () => JSX.Element;\r\n kind: AlertKind;\r\n timeout?: number;\r\n};\r\n\r\nexport function useAlertbar() {\r\n\r\n const alerts: Ref = ref([] as IAlert[]);\r\n\r\n let index: number = 1;\r\n\r\n function show(\r\n content: () => JSX.Element,\r\n kind: AlertKind,\r\n timeout?: number\r\n ): number {\r\n const id: number = index++;\r\n\r\n const alert: IAlert = {\r\n id,\r\n content,\r\n kind,\r\n timeout\r\n };\r\n\r\n alerts.value = [...alerts.value, alert];\r\n\r\n return id;\r\n }\r\n\r\n function remove(id: number): void {\r\n const index: number = alerts.value.findIndex(x => x.id === id);\r\n if (index === -1) {\r\n return;\r\n }\r\n\r\n const copy = [...alerts.value];\r\n copy.splice(index, 1);\r\n alerts.value = copy;\r\n }\r\n\r\n const alertbar: IAlertBar = {\r\n show,\r\n remove\r\n };\r\n\r\n return {\r\n alerts: readonly(alerts),\r\n alertbar\r\n };\r\n}\r\n\r\nfunction getModifier(kind: AlertKind): string {\r\n switch (kind)\r\n {\r\n case AlertKind.Info:\r\n return \"alert-bar--info\";\r\n case AlertKind.Success:\r\n return \"alert-bar--success\";\r\n case AlertKind.Warning:\r\n return \"alert-bar--warning\";\r\n case AlertKind.Error:\r\n return \"alert-bar--danger\";\r\n default:\r\n throw new UnreachableValueError(kind);\r\n }\r\n}\r\n\r\nexport const Alert = defineComponent({\r\n props: {\r\n kind: {\r\n type: Number as PropType,\r\n required: true\r\n },\r\n onClose: {\r\n type: Function as PropType<() => void>\r\n }\r\n },\r\n\r\n setup(props, {slots}) {\r\n\r\n return () => {\r\n const modifier: string = getModifier(props.kind);\r\n\r\n return (\r\n
        \r\n
        \r\n \r\n
        \r\n
        \r\n {slots.default && slots.default()}\r\n
        \r\n \r\n
        \r\n )\r\n };\r\n }\r\n});\r\n\r\nexport interface IAlertBar {\r\n show(\r\n content: () => JSX.Element,\r\n kind: AlertKind,\r\n timeout?: number\r\n ): number;\r\n\r\n remove(id: number): void;\r\n}\r\n\r\nenum AnimatorState {\r\n Enter = 1,\r\n Normal = 2,\r\n Exit = 3\r\n}\r\n\r\ntype AlertEntity = {\r\n id: number;\r\n element: HTMLElement | null;\r\n kind: AlertKind;\r\n timerHandle: number;\r\n animatorState: AnimatorState;\r\n content: () => JSX.Element;\r\n yOffset: number | undefined;\r\n}\r\n\r\nexport const AlertContainer = defineComponent({\r\n props: {\r\n alerts: {\r\n type: Array as PropType,\r\n required: true\r\n },\r\n alertbar:{\r\n type: Object as PropType,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const entities: AlertEntity[] = reactive([] as AlertEntity[]);\r\n \r\n const repositionOtherAnimators = (entityBeingRemoved: AlertEntity) => {\r\n let offSet: number = 0;\r\n let foundEntity: boolean = false;\r\n \r\n for (const currentEntity of entities) {\r\n if (currentEntity.id === entityBeingRemoved.id) {\r\n foundEntity = true;\r\n continue;\r\n }\r\n\r\n if (!currentEntity.element) {\r\n continue;\r\n }\r\n\r\n if (foundEntity) {\r\n currentEntity.yOffset = offSet;\r\n }\r\n\r\n offSet = offSet + currentEntity.element.clientHeight;\r\n }\r\n };\r\n\r\n const onAdded = (alert: IAlert) => {\r\n const {\r\n id,\r\n kind,\r\n content,\r\n timeout\r\n } = alert;\r\n \r\n const timerHandle: number = setTimeout(\r\n () => props.alertbar.remove(id),\r\n timeout || 5000\r\n );\r\n const entity: AlertEntity = {\r\n id,\r\n kind,\r\n content,\r\n timerHandle,\r\n element: null,\r\n animatorState: AnimatorState.Enter,\r\n yOffset: undefined\r\n };\r\n\r\n entities.push(reactive(entity));\r\n };\r\n\r\n const onRemoved = (alert: IAlert) => {\r\n const index: number = entities.findIndex(x => x.id === alert.id);\r\n if (index === -1) {\r\n return;\r\n }\r\n\r\n clearTimeout(entities[index].timerHandle);\r\n const entity: AlertEntity = entities[index];\r\n if (entity.element) {\r\n if (entity.animatorState === AnimatorState.Exit) {\r\n return;\r\n }\r\n entity.animatorState = AnimatorState.Exit;\r\n repositionOtherAnimators(entity);\r\n } else {\r\n entities.splice(index, 1);\r\n }\r\n };\r\n\r\n watch(\r\n () => props.alerts,\r\n (current, old) => {\r\n const removedItems = old.filter(x => !current.some(y => y == x));\r\n for (const removed of removedItems) {\r\n onRemoved(removed);\r\n }\r\n \r\n const addedItems = current.filter(x => !old.some(y => y == x));\r\n for (const added of addedItems) {\r\n onAdded(added);\r\n }\r\n }\r\n );\r\n\r\n const onMounted = (entity: AlertEntity) => {\r\n let offSet: number = 0;\r\n let foundEntity: boolean = false;\r\n \r\n for (let i = 0; i < entities.length; i++) {\r\n const currentEntity: AlertEntity = entities[i];\r\n if (currentEntity.id === entity.id) {\r\n foundEntity = true;\r\n }\r\n\r\n if (!currentEntity.element) {\r\n continue;\r\n }\r\n\r\n if (foundEntity) {\r\n currentEntity.yOffset = offSet;\r\n }\r\n\r\n const top: number = parseFloat(currentEntity.element.style.top || \"\") || 0;\r\n offSet = top + currentEntity.element.clientHeight;\r\n }\r\n };\r\n\r\n const onAnimationend = (entity: AlertEntity) => {\r\n switch (entity.animatorState) {\r\n case AnimatorState.Enter:\r\n entity.animatorState = AnimatorState.Normal;\r\n break;\r\n case AnimatorState.Exit:{\r\n const index: number = entities.findIndex(\r\n (x) => x.id === entity.id\r\n );\r\n if (index !== -1) {\r\n entities.splice(index, 1);\r\n }\r\n break;\r\n }\r\n case AnimatorState.Normal:\r\n // Nothing to do here\r\n break;\r\n }\r\n };\r\n\r\n return () => {\r\n return (\r\n
        \r\n {entities.map(x => {\r\n return (\r\n onAnimationend(x)}\r\n onVnodeMounted={(node) => {\r\n x.element = node.el as HTMLElement;\r\n onMounted(x);\r\n }}\r\n >\r\n props.alertbar.remove(x.id)}\r\n \r\n >\r\n {x.id}{x.content()}\r\n \r\n \r\n )\r\n }\r\n )}\r\n
        \r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const AlertAnimator = defineComponent({\r\n props: {\r\n state: {\r\n type: Number as PropType,\r\n required: true\r\n },\r\n offset: {\r\n type: Number,\r\n required: false\r\n },\r\n onAnimationend: {\r\n type: Function,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props, {slots}) {\r\n\r\n return () => {\r\n let classes = \"alert-bar-animator\";\r\n if (props.state === AnimatorState.Enter) {\r\n classes += \" alert-bar-animator--enter\";\r\n } else if (props.state === AnimatorState.Exit) {\r\n classes += \" alert-bar-animator--exit\";\r\n }\r\n \r\n const style = {\r\n top: typeof props.offset !== undefined\r\n ? `${props.offset}px`\r\n : undefined\r\n };\r\n\r\n return (\r\n
        props.onAnimationend()}\r\n >\r\n {slots.default && slots.default()}\r\n
        \r\n )\r\n };\r\n }\r\n});\r\n","import \"@/styles/components/form.less\";\r\nimport { defineComponent, PropType, Teleport, VNode } from \"vue\";\r\nimport { Checkbox } from './Checkbox';\r\nimport { IActionBar, injectActionBar } from '../ActionBar';\r\nimport { UnreachableValueError } from '../misc';\r\nimport { Alert, AlertKind, AlertContainer, useAlertbar } from '../AlertBar';\r\n\r\nenum FormControlLayout {\r\n Normal = 0,\r\n Spread = 1\r\n}\r\n\r\nfunction getModifier(layout: FormControlLayout): string {\r\n switch(layout)\r\n {\r\n case FormControlLayout.Normal:\r\n return \"\";\r\n case FormControlLayout.Spread:\r\n return \"form__control--spread\";\r\n default:\r\n throw new UnreachableValueError(layout);\r\n }\r\n}\r\n\r\nexport const FormControl = defineComponent({\r\n props: {\r\n layout: {\r\n type: Number as PropType,\r\n default: FormControlLayout.Normal\r\n }\r\n },\r\n\r\n setup(props, { slots }) {\r\n const modifier: string = getModifier(props.layout);\r\n\r\n return () => (\r\n
        \r\n { slots.default && slots.default()}\r\n
        \r\n );\r\n }\r\n});\r\n\r\nexport const TryOutForm = defineComponent({\r\n setup() {\r\n const actionBar: IActionBar | undefined = injectActionBar();\r\n\r\n const { alertbar, alerts} = useAlertbar();\r\n\r\n const addAlert = () => {\r\n alertbar.show(\r\n () => ( hello world),\r\n AlertKind.Warning\r\n );\r\n };\r\n\r\n const addAction = () => {\r\n if (!actionBar) {\r\n return;\r\n }\r\n actionBar.add(\"new action\");\r\n };\r\n\r\n return () => (\r\n \r\n \r\n \r\n \r\n\r\n

        Error below?

        \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n hello\r\n \r\n\r\n \r\n hello\r\n \r\n\r\n \r\n hello\r\n \r\n\r\n \r\n hello\r\n \r\n\r\n \r\n <>\r\n

        teleport me

        \r\n

        Sub teleport

        \r\n \r\n
        \r\n\r\n \r\n

        teleport me as well

        \r\n
        \r\n\r\n \r\n

        teleport me as well

        \r\n
        \r\n\r\n \r\n \r\n tab1\r\n \r\n \r\n tab2\r\n \r\n \r\n tab3\r\n \r\n \r\n \r\n );\r\n }\r\n});\r\n\r\nexport const Tabs = defineComponent({\r\n\r\n setup(props, { slots }) {\r\n const renderTabHeader = (a: VNode) => {\r\n return (
      • {a.props?.title}
      • )\r\n }\r\n\r\n return () => {\r\n\r\n const children = slots.default ? slots.default() : [];\r\n\r\n return (\r\n
        \r\n
          \r\n {children.map(x => renderTabHeader(x))}\r\n
        \r\n\r\n {children}\r\n\r\n
        \r\n );\r\n }\r\n }\r\n});\r\n\r\nexport const Tab = defineComponent({\r\n props: {\r\n title: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n\r\n setup(_, { slots }) {\r\n return () => (\r\n
        \r\n { slots.default && slots.default() }\r\n
        \r\n );\r\n }\r\n});\r\n\r\nexport const Form = defineComponent({\r\n props: {\r\n horizontal: Boolean\r\n },\r\n\r\n setup(props, { slots }) {\r\n return () => (\r\n
        \r\n { slots.default && slots.default() }\r\n
        \r\n );\r\n }\r\n});\r\n\r\nexport const FormTextInput = defineComponent({\r\n props: {\r\n value: String,\r\n onChange: Function as PropType<(value: string) => void>,\r\n hasError: Boolean \r\n },\r\n\r\n setup(props) {\r\n \r\n return () => {\r\n let classes: string = \"form__input\";\r\n if (props.hasError) {\r\n classes += \" form__input--error\";\r\n }\r\n \r\n const onChange = (args: Event) => {\r\n if (props.onChange) {\r\n props.onChange((args.target as HTMLInputElement).value);\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n }\r\n});\r\n\r\nexport const ValidationMessage = defineComponent({\r\n props: {\r\n text: {\r\n type: String\r\n }\r\n },\r\n\r\n setup (props) {\r\n\r\n return () => (\r\n <>\r\n { props.text && {props.text}}\r\n \r\n )\r\n }\r\n})\r\n\r\nexport const FormLabel = defineComponent({\r\n props: {\r\n text: {\r\n type: String,\r\n required: true\r\n },\r\n for: {\r\n type: String,\r\n default: null\r\n }\r\n },\r\n\r\n setup(props) {\r\n return () => (\r\n \r\n );\r\n }\r\n});\r\n\r\nexport const FormItem = defineComponent({\r\n props: {\r\n label: {\r\n type: String,\r\n default: null\r\n },\r\n for: {\r\n type: String,\r\n default: null\r\n },\r\n fullWidth: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n setup(props, { slots }) {\r\n return () => {\r\n return (\r\n
        \r\n {props.label && }\r\n \r\n { slots.default && slots.default() }\r\n \r\n \r\n );\r\n };\r\n }\r\n});\r\n","import \"@/styles/components/busy-indicator.less\";\r\nimport { defineComponent } from 'vue';\r\n\r\nexport const Spinner = defineComponent({\r\n\r\n setup() {\r\n\r\n return () => {\r\n return (\r\n
        \r\n )\r\n };\r\n }\r\n});\r\n\r\nexport const BusyIndicator = defineComponent({\r\n setup() {\r\n\r\n return () => {\r\n\r\n return (\r\n
        \r\n
        \r\n \r\n
        \r\n
        \r\n )\r\n };\r\n }\r\n});\r\n\r\nexport const BusyIndicatorContainer = defineComponent({\r\n props: {\r\n showBusyIndicator: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n\r\n setup(props, { slots }) {\r\n return () => {\r\n return (\r\n
        \r\n { props.showBusyIndicator && }\r\n { slots.default && slots.default() }\r\n
        \r\n );\r\n };\r\n }\r\n})","import { defineComponent, Teleport } from 'vue';\r\nimport \"@/styles/components/dialog.less\";\r\nimport { ActionIcon } from './ActionIcon';\r\nimport { BusyIndicatorContainer } from './BusyIndicator';\r\n\r\nexport const Dialog = defineComponent({\r\n props: {\r\n showBusyIndicator: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n\r\n setup(props, { slots }) {\r\n\r\n return () => {\r\n\r\n return (\r\n \r\n
        \r\n
        \r\n \r\n { slots.default && slots.default() }\r\n \r\n
        \r\n
        \r\n
        \r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const DialogHeader = defineComponent({\r\n props: {\r\n title: {\r\n type: String,\r\n required: true\r\n },\r\n onClose: {\r\n type: Function,\r\n required: false\r\n }\r\n },\r\n\r\n setup(props, { slots }) {\r\n return () => {\r\n return (\r\n
        \r\n \r\n { slots.default && slots.default()}\r\n { props.onClose && (\r\n \r\n )}\r\n
        \r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const DialogTitle = defineComponent({\r\n props: {\r\n text: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n\r\n return () => {\r\n return (\r\n

        {props.text}

        \r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const DialogBody = defineComponent({\r\n setup(_, { slots }) {\r\n\r\n return () => {\r\n return (\r\n
        \r\n { slots.default && slots.default() }\r\n
        \r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const DialogButtons = defineComponent({\r\n setup(_, { slots }) {\r\n\r\n return () => {\r\n return (\r\n
        \r\n { slots.default && slots.default() }\r\n
        \r\n );\r\n };\r\n }\r\n});\r\n","import { defineComponent, PropType } from 'vue';\r\nimport {\r\n Dialog,\r\n DialogHeader,\r\n DialogBody,\r\n DialogButtons\r\n} from './Dialog';\r\n\r\nexport type ConfirmOptions = {\r\n text: string;\r\n action(): void;\r\n};\r\n\r\nexport type DeclineOptions = {\r\n text?: string;\r\n action(): void;\r\n};\r\n\r\nexport const ConfirmationDialog = defineComponent({\r\n props: {\r\n title: {\r\n type: String,\r\n required: true\r\n },\r\n confirm: {\r\n type: Object as PropType,\r\n required: true\r\n },\r\n decline: {\r\n type: Object as PropType,\r\n required: true\r\n },\r\n showClose: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n\r\n setup(props, {slots}) {\r\n\r\n return () => (\r\n \r\n props.decline.action()\r\n : undefined\r\n }\r\n >\r\n \r\n \r\n { slots.default && slots.default() }\r\n \r\n \r\n props.confirm.action()}\r\n >\r\n {props.confirm.text}\r\n \r\n\r\n props.decline.action()}\r\n >\r\n {props.decline.text || \"Close\"}\r\n \r\n \r\n \r\n );\r\n }\r\n});","import { defineComponent, ref } from 'vue';\r\nimport { Checkbox } from '@/components/forms/Checkbox';\r\nimport { TryOutForm} from '@/components/forms/TryOut';\r\nimport { ConfirmationDialog } from '@/components/ConfirmationDialog';\r\nimport { useActionBar, ActionBar, provideActionBar } from '@/components/ActionBar';\r\n\r\nexport default defineComponent({\r\n setup() {\r\n const isEnabled = ref(false);\r\n\r\n const alwaysFalse = ref(false);\r\n\r\n const showDialog = ref(false);\r\n\r\n const { actionBar, actions} = useActionBar();\r\n provideActionBar(actionBar);\r\n\r\n return () => (\r\n
        \r\n \r\n

        This is an about page

        \r\n \r\n\r\n isEnabled.value = x}\r\n >\r\n \r\n\r\n {isEnabled.value ? \"Enabled\" : \"Not\"}\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n {alwaysFalse.value = x; setTimeout(() => alwaysFalse.value = false, 0)}}\r\n >\r\n\r\n \r\n\r\n { showDialog.value &&\r\n {\r\n showDialog.value = false\r\n }\r\n }}\r\n decline={{\r\n action: () => {\r\n showDialog.value = false\r\n }\r\n }}\r\n >\r\n \r\n \r\n \r\n }\r\n
        \r\n );\r\n }\r\n });","import { defineComponent, PropType } from 'vue';\r\n\r\ntype Something = {\r\n id: number;\r\n text: string;\r\n}\r\n\r\nexport default defineComponent({\r\n props: {\r\n msg: String,\r\n items: Array as PropType\r\n },\r\n setup(props) {\r\n return () => (\r\n
        \r\n

        {props.msg}

        \r\n

        \r\n For a guide and recipes on how to configure / customize this project,
        \r\n check out the\r\n vue-cli documentation.\r\n

        \r\n

        Installed CLI Plugins

        \r\n \r\n

        Essential Links

        \r\n \r\n

        Ecosystem

        \r\n \r\n
        \r\n );\r\n }\r\n});\r\n","import { ref, defineComponent } from \"vue\";\r\nexport default defineComponent({\r\n props: {\r\n seed: Number \r\n },\r\n\r\n setup(props) {\r\n const count = ref(props.seed || 0);\r\n const increase = () => {\r\n count.value++\r\n };\r\n\r\n return () => (\r\n
        \r\n \r\n
        \r\n );\r\n }\r\n});\r\n\r\n","import HellowWorld from '@/components/HelloWorld';\r\nimport Counter from '@/components/Counter';\r\nimport { defineComponent, ref } from 'vue';\r\nimport logoUrl from \"@/assets/logo.png\";\r\n\r\nexport default defineComponent({\r\n setup() {\r\n const msg = ref(\"Hello via props\");\r\n const change = () => {\r\n msg.value = \"abc\";\r\n };\r\n\r\n return () => (\r\n
        \r\n \"Vue\r\n \r\n \r\n \r\n
        \r\n );\r\n }\r\n});","import { UnreachableValueError } from '@/components/misc';\r\nimport { reactive } from 'vue';\r\n\r\nexport type ModelValue = {\r\n value: TValue;\r\n validationMessage?: string | undefined;\r\n wasTouched?: boolean | undefined;\r\n};\r\n\r\nexport function isModelValue(value: unknown): value is ModelValue {\r\n return value\r\n && typeof value === \"object\"\r\n && !Array.isArray(value)\r\n && \"value\" in value;\r\n}\r\n\r\nexport type ModelValueChanged = Omit, \"validationMessage\">;\r\n\r\nexport type WrappedValue =\r\n TValue extends string\r\n ? string\r\n :\r\n TValue extends boolean\r\n ? boolean\r\n : \r\n TValue extends number\r\n ? number\r\n :\r\n TValue extends Array\r\n ? ModelValue>[]\r\n :\r\n TValue extends {}\r\n ? {\r\n [TProperty in keyof TValue]: ModelValue>;\r\n }\r\n :\r\n never;\r\n\r\nexport function wrapInModelValue(\r\n value: TValue\r\n): ModelValue> {\r\n return {\r\n value: wrapValue(value)\r\n };\r\n}\r\n\r\nexport function wrapValue(value: TValue): WrappedValue {\r\n if (Array.isArray(value)) {\r\n return value.map((x) => wrapInModelValue(x)) as WrappedValue;\r\n }\r\n\r\n if (typeof value === \"object\"\r\n && value !== null\r\n && value !== undefined\r\n ){\r\n const wrappedObject = {};\r\n for (const property in value)\r\n {\r\n (wrappedObject as any)[property] = wrapInModelValue(value[property]);\r\n }\r\n\r\n return wrappedObject as WrappedValue;\r\n }\r\n\r\n return value as any;\r\n}\r\n\r\nexport type UnwrappedValue = \r\n TValue extends ModelValue\r\n ? string\r\n :\r\n TValue extends ModelValue\r\n ? boolean\r\n :\r\n TValue extends ModelValue\r\n ? number\r\n :\r\n TValue extends Array\r\n ? UnwrappedValue[]\r\n :\r\n TValue extends ModelValue>\r\n ? UnwrappedValue[]\r\n :\r\n TValue extends ModelValue<{}>\r\n ? {\r\n [TProperty in keyof TValue[\"value\"]]: UnwrappedValue;\r\n }\r\n :\r\n TValue extends {}\r\n ? {\r\n [TProperty in keyof TValue]: UnwrappedValue;\r\n }\r\n :\r\n TValue;\r\n\r\nexport function unwrapModelValue(value: TValue): UnwrappedValue {\r\n if (isModelValue(value)){\r\n return unwrapValue(value.value as any);\r\n }\r\n\r\n // TODO WJG should we throw here?\r\n return value as UnwrappedValue;\r\n}\r\n\r\nexport function unwrapValue(value: TValue): UnwrappedValue {\r\n if (Array.isArray(value)) {\r\n return value.map((x) => unwrapModelValue(x)) as UnwrappedValue;\r\n }\r\n\r\n if (typeof value === \"object\"\r\n && value !== null\r\n && value !== undefined\r\n ){\r\n const unWrappedObject = {};\r\n for (const property in value)\r\n {\r\n (unWrappedObject as any)[property] = unwrapModelValue(value[property]);\r\n }\r\n\r\n return unWrappedObject as UnwrappedValue;\r\n }\r\n\r\n return value as UnwrappedValue;\r\n}\r\n\r\nexport interface IValidationError {\r\n readonly path: string;\r\n readonly message: string;\r\n}\r\n\r\nexport function simpleValidationError(message: string): IValidationError {\r\n return {\r\n message,\r\n path: \"\"\r\n };\r\n}\r\n\r\nexport class PrefixedValidationError implements IValidationError\r\n{\r\n private readonly _prefix: string;\r\n private readonly _error: IValidationError;\r\n\r\n public get path(): string {\r\n return this._prefix + this._error.path;\r\n }\r\n\r\n public get message(): string {\r\n return this._error.message;\r\n }\r\n\r\n constructor(prefix: string, error: IValidationError)\r\n {\r\n this._prefix = prefix;\r\n this._error = error;\r\n }\r\n}\r\n\r\nexport interface IValidationContext\r\n{\r\n readonly rootContext: IValidationContext;\r\n readonly parentContext: IValidationContext | null;\r\n readonly childContexts: readonly IValidationContext[];\r\n readonly path: string;\r\n readonly isInvalid: boolean;\r\n\r\n readonly errors: readonly IValidationError[];\r\n}\r\n\r\nexport interface IWritableValidationContext extends IValidationContext {\r\n add(error: IValidationError): void;\r\n}\r\n\r\nexport class ValidationContext implements IWritableValidationContext {\r\n\r\n private readonly _childContexts: IValidationContext[];\r\n private readonly _errors: IValidationError[];\r\n private _isMarkedInvalid: boolean;\r\n\r\n public readonly rootContext: IValidationContext;\r\n public readonly parentContext: IValidationContext | null;\r\n\r\n public readonly pathSegment: string;\r\n public readonly value: TValue;\r\n\r\n public get path(): string {\r\n return this.parentContext\r\n ? this.parentContext.path + this.pathSegment\r\n : this.pathSegment;\r\n }\r\n\r\n public get childContexts(): readonly IValidationContext[] {\r\n return this._childContexts;\r\n }\r\n\r\n public get errors(): readonly IValidationError[] {\r\n const result: IValidationError[] = [...this._errors];\r\n\r\n const pathSegment: string = this.pathSegment;\r\n for (const childContext of this._childContexts)\r\n {\r\n const childErrors: readonly IValidationError[] = childContext.errors\r\n .map(x => new PrefixedValidationError(pathSegment, x));\r\n result.push(...childErrors);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public get isInvalid(): boolean {\r\n return this._isMarkedInvalid || this.childContexts.some(x => x.isInvalid);\r\n }\r\n\r\n private constructor(\r\n parentContext: IValidationContext | null,\r\n pathSegment: string,\r\n value: TValue\r\n ) {\r\n this.parentContext = parentContext;\r\n this.rootContext = parentContext?.rootContext || this;\r\n this.value = value;\r\n this.pathSegment = pathSegment;\r\n this._errors = [];\r\n this._childContexts = [];\r\n this._isMarkedInvalid = false;\r\n }\r\n\r\n public add(error: IValidationError)\r\n {\r\n this.markInvalid();\r\n this._errors.push(new PrefixedValidationError(this.pathSegment, error));\r\n }\r\n\r\n public markInvalid()\r\n {\r\n this._isMarkedInvalid = true;\r\n }\r\n\r\n public static createRoot(value: TValue): ValidationContext\r\n {\r\n return new ValidationContext(null, \"\", value);\r\n }\r\n\r\n public createChildContext(pathSegment: string, value: TOtherValue): ValidationContext\r\n {\r\n const childContext = new ValidationContext(this, pathSegment, value);\r\n this._childContexts.push(childContext);\r\n return childContext;\r\n }\r\n}\r\n\r\nexport type IValidator = (context: ValidationContext) => void;\r\n\r\nexport function validatorCollection (\r\n { stopAfterInvalidResult }: { stopAfterInvalidResult: boolean; },\r\n ...validators: IValidator[]\r\n): IValidator {\r\n\r\n return (context) => {\r\n for (const validator of validators) {\r\n validator(context);\r\n if (stopAfterInvalidResult && context.isInvalid) {\r\n return;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport type PropertyValidators = {\r\n [TProperty in keyof TObject]?: IValidator\r\n};\r\n\r\n\r\nexport function forObject(\r\n ...validators: IValidator[]\r\n): IValidator {\r\n return validatorCollection(\r\n { stopAfterInvalidResult: false },\r\n ...validators\r\n );\r\n}\r\n\r\nexport function forProperties(\r\n propertyValidators: PropertyValidators\r\n): IValidator {\r\n return (context) => {\r\n const value: TObject = context.value || {};\r\n\r\n // TypeScript doesn't have a manner to go over the key/values of an object\r\n // in a typesafe manner. Only in the type definition it has this\r\n const propertyNameContainingValidator: string[] = Object.getOwnPropertyNames(propertyValidators);\r\n for (const propertyName of propertyNameContainingValidator) {\r\n \r\n const validator: IValidator = (propertyValidators as any)[propertyName];\r\n\r\n let propertyValue: unknown = undefined;\r\n if (propertyName in value) {\r\n propertyValue = (value as any)[propertyName];\r\n }\r\n\r\n const childContextPathSegment = context.path.length > 0\r\n ? \".\" + propertyName\r\n : propertyName;\r\n\r\n const childContext: ValidationContext = context\r\n .createChildContext(childContextPathSegment, propertyValue);\r\n\r\n validator(childContext);\r\n }\r\n };\r\n}\r\n\r\nexport function forScalar(\r\n ...validators: IValidator[]\r\n): IValidator {\r\n return validatorCollection(\r\n { stopAfterInvalidResult: true },\r\n ...validators\r\n );\r\n}\r\n\r\nexport function forCollection(\r\n ...validators: IValidator[]\r\n): IValidator {\r\n\r\n return validatorCollection(\r\n { stopAfterInvalidResult: false },\r\n ...validators\r\n );\r\n}\r\n\r\nexport function forItems(\r\n ...validators: IValidator[]\r\n): IValidator {\r\n\r\n const validator: IValidator = validatorCollection(\r\n { stopAfterInvalidResult: false},\r\n ...validators\r\n );\r\n\r\n return (context) => {\r\n const value: TArrayItem[] = context.value;\r\n let index: number = 0;\r\n for (const item of value) {\r\n const itemContext: ValidationContext = context\r\n .createChildContext(`[${index}]`, item);\r\n validator(itemContext);\r\n index++;\r\n }\r\n };\r\n}\r\n\r\nexport const notEmpty: IValidator = (context) => {\r\n const value: string = context.value;\r\n if (!value){\r\n context.add(simpleValidationError(\"Cannot be empty\"));\r\n }\r\n};\r\n\r\nexport function equals(valueToMatch: string): IValidator {\r\n return (context) => {\r\n const value: string = context.value;\r\n if (value !== valueToMatch){\r\n context.add(simpleValidationError(`Does not match '${valueToMatch}'`));\r\n }\r\n };\r\n}\r\n\r\nexport function maxLength(maxLength: number): IValidator<{ length: number; }> {\r\n\r\n return (context) => {\r\n const value: { length: number; } = context.value;\r\n if (value.length > maxLength) {\r\n context.add(simpleValidationError(`Cannot contain more then '${maxLength}' entries`));\r\n }\r\n }\r\n}\r\n\r\nexport function when(\r\n predicate: (value: TValue) => boolean,\r\n validator: IValidator\r\n): IValidator {\r\n \r\n return (context) => {\r\n if (predicate(context.value)) {\r\n validator(context);\r\n }\r\n }\r\n}\r\n\r\ntype TypeGuard = (value: TOriginal) => value is TCasted;\r\n\r\nexport function whenType(\r\n guard: TypeGuard,\r\n validator: IValidator\r\n): IValidator {\r\n\r\n return (context) => {\r\n const value: TValue = context.value;\r\n if (guard(value)) {\r\n const castedContext = context.createChildContext(\"\", value);\r\n validator(castedContext);\r\n }\r\n }\r\n}\r\n\r\nexport type ValidationResult = {\r\n isInvalid: false;\r\n}\r\n |\r\n{\r\n isInvalid: true;\r\n errors: readonly IValidationError[];\r\n}\r\n\r\nexport function validate(\r\n value: TValue,\r\n validator: IValidator\r\n): ValidationResult {\r\n const context = ValidationContext.createRoot(value);\r\n validator(context);\r\n\r\n if (context.isInvalid) {\r\n return {\r\n isInvalid: context.isInvalid,\r\n errors: context.errors\r\n };\r\n }\r\n\r\n return {\r\n isInvalid: false\r\n };\r\n}\r\n\r\n\r\nconst enum PathSegmentKind {\r\n Property = 1,\r\n Indexer = 2\r\n}\r\n\r\ntype PathSegment = { kind: PathSegmentKind.Property, value: string }\r\n | { kind: PathSegmentKind.Indexer, value: string };\r\n\r\n\r\nfunction ensureValidAutoClosingSegment(segment: PathSegment, processedPath: string) {\r\n if (!segment) {\r\n return;\r\n }\r\n\r\n switch (segment.kind)\r\n {\r\n case PathSegmentKind.Property:\r\n if (!segment.value) {\r\n throw new Error(`No property name is set. Processed: '${processedPath}'`);\r\n }\r\n break;\r\n case PathSegmentKind.Indexer:\r\n throw new Error(`Indexer is not an auto closing segment. Processed: '${processedPath}'`);\r\n break;\r\n default:\r\n throw new UnreachableValueError(segment);\r\n }\r\n}\r\n\r\nexport function parsePath(path: string): string[] {\r\n const result: string[] = [];\r\n let currentSegment: PathSegment | null = null;\r\n \r\n let processedPath = \"\";\r\n for (const char of path) {\r\n processedPath += char;\r\n if (char === \".\") {\r\n if (currentSegment) {\r\n ensureValidAutoClosingSegment(currentSegment, processedPath);\r\n result.push(currentSegment.value);\r\n }\r\n\r\n currentSegment = { kind: PathSegmentKind.Property, value: \"\" };\r\n } else if (char === \"[\") {\r\n if (currentSegment) {\r\n ensureValidAutoClosingSegment(currentSegment, processedPath);\r\n result.push(currentSegment.value);\r\n }\r\n\r\n currentSegment = { kind: PathSegmentKind.Indexer, value: \"\" };\r\n } else if (char === \"]\") {\r\n if (!currentSegment || currentSegment.kind !== PathSegmentKind.Indexer) {\r\n throw new Error(`No indexer segment to self close. Processed: '${processedPath}'`);\r\n }\r\n\r\n if (!currentSegment.value) {\r\n throw new Error(`No indexer value is set. Processed: '${processedPath}'`);\r\n }\r\n\r\n result.push(currentSegment.value);\r\n currentSegment = null;\r\n } else {\r\n if (!currentSegment) {\r\n currentSegment = { kind: PathSegmentKind.Property, value: \"\" };\r\n }\r\n\r\n switch (currentSegment.kind)\r\n {\r\n case PathSegmentKind.Property:\r\n currentSegment.value += char;\r\n break;\r\n case PathSegmentKind.Indexer:\r\n currentSegment.value += char;\r\n break; \r\n default:\r\n throw new UnreachableValueError(currentSegment);\r\n }\r\n }\r\n }\r\n\r\n if (currentSegment) {\r\n ensureValidAutoClosingSegment(currentSegment, processedPath);\r\n result.push(currentSegment.value);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function getByPath(\r\n object: object | object[],\r\n path: string\r\n): unknown {\r\n const segments = parsePath(path);\r\n let currentObject: unknown = object;\r\n for (const segment of segments) {\r\n if (isModelValue(currentObject)) {\r\n currentObject = currentObject.value;\r\n }\r\n\r\n if (typeof currentObject !== \"object\" || !currentObject) {\r\n throw new Error(`Cannot index into: '${currentObject}'`);\r\n }\r\n currentObject = (currentObject as any)[segment];\r\n }\r\n\r\n return currentObject;\r\n}\r\n\r\nexport function processValidationError(\r\n state: object | object[],\r\n error: IValidationError,\r\n { ignoreUntouched }: { ignoreUntouched: boolean} = { ignoreUntouched: true }\r\n): boolean {\r\n const { path, message} = error;\r\n if (!path || path === \"\") {\r\n return false;\r\n }\r\n \r\n const object: unknown = getByPath(state, path);\r\n if (isModelValue(object)) {\r\n if (object.wasTouched || !ignoreUntouched) {\r\n object.validationMessage = message;\r\n }\r\n\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport function hasAnyValidationMessages(\r\n value: unknown\r\n): boolean {\r\n if (!value) {\r\n return false;\r\n }\r\n\r\n if (isModelValue(value)) {\r\n if (value.validationMessage) {\r\n return true;\r\n }\r\n return hasAnyValidationMessages(value.value);\r\n } else if (Array.isArray(value)) {\r\n for (const item of value) {\r\n const itemHasAnyValidationMessages: boolean = hasAnyValidationMessages(item);\r\n if (itemHasAnyValidationMessages) {\r\n return true;\r\n }\r\n }\r\n } else if (typeof value === \"object\"\r\n && value !== null\r\n && value !== undefined\r\n ) {\r\n for (const property in value) {\r\n const itemHasAnyValidationMessages: boolean = hasAnyValidationMessages((value as any)[property]);\r\n if (itemHasAnyValidationMessages) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\nexport function useModelValidation(\r\n model: TModel,\r\n validator?: IValidator\r\n) {\r\n const modelState = reactive(\r\n wrapValue(model)\r\n ) as WrappedValue;\r\n\r\n function getModel(): TModel {\r\n return unwrapValue(modelState) as any as TModel;\r\n }\r\n\r\n function validateModel(\r\n { ignoreUntouched }: { ignoreUntouched: boolean} = { ignoreUntouched: true}\r\n ) {\r\n if (!validator) {\r\n return true;\r\n }\r\n \r\n const modelToValidate: TModel = getModel();\r\n const validationResult: ValidationResult = validate(modelToValidate, validator);\r\n if (!validationResult.isInvalid) {\r\n return true;\r\n }\r\n\r\n for (const error of validationResult.errors) {\r\n if (!processValidationError(modelState, error, { ignoreUntouched })) {\r\n console.error(`Was not able to process error for path '${error.path}'`);\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function patchModel(patchState: Partial>) {\r\n for (const property in patchState) {\r\n const propertyValue = patchState[property]; \r\n if (propertyValue) {\r\n (modelState as any)[property] = propertyValue;\r\n }\r\n }\r\n\r\n validateModel();\r\n }\r\n\r\n return {\r\n modelState,\r\n patchModel,\r\n getModel,\r\n isValid: validateModel\r\n };\r\n}","import { defineComponent } from \"vue\";\r\n\r\nexport const StateViewer = defineComponent({\r\n\r\n props: {\r\n state: {\r\n required: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n\r\n return () => {\r\n\r\n return (\r\n
        {JSON.stringify(props.state, null, 4)}
        \r\n );\r\n };\r\n }\r\n});","const ID_PREFIX: string =\"__id__\";\r\nlet idCounter: number = 1;\r\n\r\nexport function generateId(): string {\r\n return ID_PREFIX + ++idCounter;\r\n}\r\n\r\nexport type GeneratedIds = Record;\r\n\r\nexport function generateIds(\r\n object: TObject\r\n): GeneratedIds {\r\n const result: Partial> = {};\r\n for (const propertyName in object) {\r\n result[propertyName] = generateId();\r\n }\r\n return result as Record;\r\n}\r\n\r\n","import { defineComponent, computed, PropType, ref } from 'vue';\r\nimport { \r\n IValidator,\r\n forProperties,\r\n forScalar,\r\n notEmpty,\r\n equals,\r\n forCollection,\r\n maxLength,\r\n forItems,\r\n ModelValue,\r\n ModelValueChanged,\r\n hasAnyValidationMessages,\r\n useModelValidation,\r\n WrappedValue,\r\n wrapInModelValue\r\n} from '@/infrastructure/validation';\r\nimport { ValidationMessage, FormItem, Form } from '@/components/forms/TryOut';\r\nimport { StateViewer } from '@/components/StateViewer';\r\nimport { generateIds } from '@/infrastructure/utils';\r\nimport { BusyIndicatorContainer } from '@/components/BusyIndicator';\r\nimport { useResizeObserver } from '@/infrastructure/sizing';\r\nimport { SomeBar } from '@/components/ActionBar';\r\n\r\ntype SectionModel = {\r\n a: string;\r\n b: string;\r\n};\r\n\r\ntype Model = {\r\n upn: string;\r\n firstName: string;\r\n lastName: string;\r\n section: SectionModel;\r\n array: string[];\r\n};\r\n\r\nconst validator: IValidator = forProperties(\r\n {\r\n upn: notEmpty,\r\n firstName: forScalar(\r\n notEmpty,\r\n equals(\"123\")\r\n ),\r\n lastName: notEmpty,\r\n section: forProperties({\r\n a: notEmpty,\r\n b: notEmpty\r\n }),\r\n array: forCollection(\r\n maxLength(3),\r\n forItems(\r\n notEmpty\r\n )\r\n )\r\n }\r\n);\r\n\r\nexport const TestPage = defineComponent({\r\n\r\n setup() {\r\n const defaultModel: Model = {\r\n upn: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n section: {\r\n a: \"\",\r\n b: \"\"\r\n },\r\n array: []\r\n };\r\n\r\n const { modelState, patchModel } = useModelValidation(defaultModel, validator);\r\n\r\n const hasErrors = computed(() => hasAnyValidationMessages(modelState));\r\n\r\n const onChange = (patchState: Partial>) => {\r\n patchModel(patchState);\r\n };\r\n\r\n const ids = generateIds(defaultModel);\r\n\r\n const isBusy = ref(false);\r\n\r\n const { element, size } = useResizeObserver();\r\n\r\n return () => {\r\n\r\n const {\r\n upn,\r\n firstName,\r\n lastName,\r\n section,\r\n array\r\n } = modelState;\r\n\r\n return (\r\n
        \r\n
        \r\n
        \r\n Width: {size.width}\r\n Height: {size.height}\r\n
        \r\n isBusy.value = !isBusy.value}\r\n >\r\n Toggle busy indicator\r\n \r\n \r\n \r\n
        \r\n

        {hasErrors.value ? \"Has errors\" : \"No errors\"}

        \r\n \r\n onChange({ upn: changedValue })}\r\n >\r\n \r\n \r\n\r\n \r\n onChange({ firstName: changedValue })}\r\n >\r\n \r\n \r\n\r\n \r\n onChange({ lastName: changedValue })}\r\n >\r\n \r\n \r\n\r\n onChange({ section: changedValue })}\r\n >\r\n\r\n \r\n \r\n {array.value.map((x, i) => {\r\n return (\r\n {\r\n array.value[i] = changedValue;\r\n onChange({ array: array });\r\n }}\r\n >\r\n \r\n )\r\n })}\r\n\r\n {\r\n array.value.push(wrapInModelValue(\"\"));\r\n array.wasTouched = true;\r\n onChange({ array: array });\r\n }}>\r\n Add item to array\r\n \r\n \r\n
        \r\n
        \r\n
        \r\n \r\n
        \r\n
        \r\n );\r\n }\r\n }\r\n});\r\n\r\n\r\nexport const FormTextInput = defineComponent({\r\n props: {\r\n id: String,\r\n value: {\r\n type: Object as PropType>,\r\n required: true\r\n },\r\n onChange: Function as PropType<(value: ModelValueChanged) => void>,\r\n autofocus: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n\r\n setup(props) {\r\n const onChange = (args: Event) => {\r\n if (props.onChange) {\r\n props.onChange({\r\n value: (args.target as HTMLInputElement).value,\r\n wasTouched: true\r\n });\r\n }\r\n };\r\n\r\n return () => {\r\n const { value, validationMessage } = props.value;\r\n let classes: string = \"form__input\";\r\n if (validationMessage) {\r\n classes += \" form__input--error\";\r\n }\r\n return (\r\n <>\r\n {\r\n if (props.autofocus && input) {\r\n (input as HTMLInputElement).focus();\r\n }\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n});\r\n\r\nexport const SectionTest = defineComponent({\r\n props: {\r\n value: {\r\n type: Object as PropType>>,\r\n required: true\r\n },\r\n onChange: Function as PropType<(value: ModelValueChanged>) => void>\r\n },\r\n\r\n setup(props) {\r\n\r\n const ids = generateIds(props.value.value);\r\n\r\n const { element, size } = useResizeObserver();\r\n\r\n const onChange = (patchedValue: Partial>) => {\r\n if (props.onChange) {\r\n const newValue = {...props.value.value, ...patchedValue};\r\n props.onChange({ value: newValue, wasTouched: props.value.wasTouched });\r\n }\r\n };\r\n\r\n return () => {\r\n const { \r\n value: {\r\n value,\r\n validationMessage\r\n }\r\n } = props;\r\n\r\n const { a, b } = value;\r\n \r\n return (\r\n <>\r\n \r\n\r\n \r\n
        \r\n Width: {size.width} Height: {size.height}\r\n
        \r\n onChange({ a: changedValue })}\r\n value={a}\r\n >\r\n \r\n
        \r\n\r\n \r\n onChange({ b: changedValue })}\r\n value={b}\r\n >\r\n \r\n \r\n \r\n );\r\n };\r\n }\r\n});","import {\r\n defineComponent,\r\n PropType,\r\n ref,\r\n reactive,\r\n VNode,\r\n onBeforeUnmount,\r\n CSSProperties\r\n} from 'vue';\r\n\r\nexport type Coordinate = {\r\n x: number;\r\n y: number;\r\n};\r\n\r\nexport type DragCallbackArgs = {\r\n movement: Coordinate;\r\n offset: Coordinate;\r\n};\r\n\r\nexport type DragCallback = (args: DragCallbackArgs) => void;\r\n\r\nconst OVERFLOW_REGEX = /(auto|scroll)/;\r\n\r\nfunction findNearestScrollContainer(element: HTMLElement) {\r\n while (element.parentElement) {\r\n const parent = element.parentNode as HTMLElement;\r\n \r\n const computedStyles: CSSStyleDeclaration = window.getComputedStyle(parent);\r\n if (OVERFLOW_REGEX.test(computedStyles.overflow + computedStyles.overflowX + computedStyles.overflowY)) {\r\n return parent;\r\n }\r\n\r\n element = parent;\r\n }\r\n return document.scrollingElement as HTMLElement;\r\n}\r\n\r\nconst SCROLL_SENSITIVENESS = 20;\r\nconst SCROLL_SPEED = 20;\r\n\r\nlet pointerDownHandled: boolean = false;\r\n\r\nexport const Draggable = defineComponent({\r\n props :{\r\n onStart: {\r\n type: Function as PropType\r\n },\r\n onDrag: {\r\n type: Function as PropType\r\n },\r\n onStop: {\r\n type: Function as PropType\r\n }\r\n },\r\n\r\n setup(props, { slots }) {\r\n const isDragging = ref(false);\r\n const isPointerDown = ref(false);\r\n const preventClick = ref(false);\r\n const pointerDownOffset = reactive({\r\n x: -1,\r\n y: -1\r\n } as Coordinate);\r\n\r\n const startOffset = reactive({\r\n x: -1,\r\n y: -1\r\n } as Coordinate);\r\n\r\n const startScrollOffset = reactive({\r\n x: -1,\r\n y: -1\r\n } as Coordinate);\r\n const scrollContainer = ref(null);\r\n\r\n const pointerIdentifier = ref(undefined);\r\n\r\n const hasMovedEnough = ({x, y}: {x: number; y: number; }) => {\r\n return Math.abs(x) >= 5 || Math.abs(y) >= 5;\r\n };\r\n\r\n function getTouch(args: TouchEvent): Touch | undefined {\r\n for (const touch of args.changedTouches) {\r\n if (touch.identifier === pointerIdentifier.value) {\r\n return touch;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n function getMovement(args: MouseEvent | Touch): Coordinate {\r\n const movement = {\r\n x: args.pageX - pointerDownOffset.x,\r\n y: args.pageY - pointerDownOffset.y\r\n };\r\n\r\n if (scrollContainer.value && scrollContainer.value !== document.scrollingElement) {\r\n movement.y += scrollContainer.value.scrollTop - startScrollOffset.y;\r\n movement.x += scrollContainer.value.scrollLeft - startScrollOffset.x;\r\n }\r\n\r\n return movement;\r\n }\r\n\r\n function handlePointerDown(args: UIEvent, pointerArgs: MouseEvent | Touch) {\r\n if (pointerDownHandled) {\r\n return;\r\n }\r\n pointerDownHandled = true;\r\n if (isDragging.value) {\r\n return;\r\n }\r\n\r\n if (\"identifier\" in pointerArgs) {\r\n pointerIdentifier.value = pointerArgs.identifier;\r\n }\r\n\r\n const element = args.currentTarget as HTMLElement;\r\n scrollContainer.value = findNearestScrollContainer(element);\r\n\r\n startOffset.x = element.offsetLeft;\r\n startOffset.y = element.offsetTop;\r\n\r\n if (scrollContainer.value) {\r\n startScrollOffset.x = scrollContainer.value.scrollLeft;\r\n startScrollOffset.y = scrollContainer.value.scrollTop;\r\n }\r\n\r\n pointerDownOffset.x = pointerArgs.pageX;\r\n pointerDownOffset.y = pointerArgs.pageY;\r\n\r\n isPointerDown.value = true;\r\n }\r\n\r\n function onMouseDown(args: MouseEvent) {\r\n if (args.button !== 0) {\r\n return;\r\n }\r\n args.preventDefault();\r\n handlePointerDown(args, args);\r\n attachToPostMouseDownEvents();\r\n }\r\n\r\n function handlePointerMove(args: MouseEvent | Touch) {\r\n if (!isPointerDown.value) {\r\n return;\r\n }\r\n\r\n const movement = getMovement(args);\r\n\r\n if (!isDragging.value) {\r\n if (hasMovedEnough(movement)) {\r\n preventClick.value = true;\r\n isDragging.value = true;\r\n const focusedElement = document.activeElement;\r\n if (focusedElement && \"blur\" in focusedElement) {\r\n (focusedElement as HTMLElement).blur();\r\n }\r\n \r\n if (props.onStart) {\r\n props.onStart({ movement, offset: startOffset });\r\n }\r\n }\r\n }\r\n\r\n if (isDragging.value) {\r\n if (scrollContainer.value) {\r\n const scroller = scrollContainer.value;\r\n\r\n if (scroller !== document.scrollingElement) {\r\n if (args.pageY - scroller.offsetTop < SCROLL_SENSITIVENESS) {\r\n scroller.scrollTop = scroller.scrollTop - SCROLL_SPEED;\r\n } else if ((scroller.offsetTop + scroller.clientHeight) - args.pageY < SCROLL_SENSITIVENESS) {\r\n scroller.scrollTop = scroller.scrollTop + SCROLL_SPEED;\r\n }\r\n\r\n if (args.pageX - scroller.offsetLeft < SCROLL_SENSITIVENESS) {\r\n scroller.scrollLeft = scroller.scrollLeft - SCROLL_SPEED;\r\n } else if ((scroller.offsetLeft + scroller.clientWidth) - args.pageX < SCROLL_SENSITIVENESS) {\r\n scroller.scrollLeft = scroller.scrollLeft + SCROLL_SPEED;\r\n }\r\n } else {\r\n if (args.pageY - scroller.scrollTop < SCROLL_SENSITIVENESS) {\r\n scroller.scrollTop = scroller.scrollTop - SCROLL_SPEED;\r\n } else if (scroller.clientHeight - (args.pageY - scroller.scrollTop) < SCROLL_SENSITIVENESS) {\r\n scroller.scrollTop = scroller.scrollTop + SCROLL_SPEED;\r\n }\r\n\r\n if (args.pageX - scroller.scrollLeft < SCROLL_SENSITIVENESS) {\r\n scroller.scrollLeft = scroller.scrollLeft - SCROLL_SPEED;\r\n } else if (scroller.clientWidth - (args.pageX - scroller.scrollLeft) < SCROLL_SENSITIVENESS) {\r\n scroller.scrollLeft = scroller.scrollLeft + SCROLL_SPEED;\r\n }\r\n }\r\n }\r\n\r\n if (props.onDrag) {\r\n props.onDrag({ movement, offset: startOffset });\r\n }\r\n }\r\n }\r\n\r\n function onMouseMove(args: MouseEvent) {\r\n if (isDragging.value) {\r\n args.preventDefault();\r\n }\r\n handlePointerMove(args);\r\n }\r\n\r\n function handlePointerUp(args: MouseEvent | Touch) {\r\n isPointerDown.value = false;\r\n\r\n if (isDragging.value) {\r\n const movement = getMovement(args);\r\n\r\n if (props.onStop) {\r\n props.onStop({ movement, offset: startOffset });\r\n }\r\n }\r\n \r\n isDragging.value = false;\r\n startOffset.x = -1;\r\n startOffset.y = -1;\r\n startScrollOffset.x = -1;\r\n startScrollOffset.y = -1;\r\n pointerDownOffset.x = -1;\r\n pointerDownOffset.y = -1;\r\n pointerIdentifier.value = undefined;\r\n scrollContainer.value = null;\r\n\r\n setTimeout(() => preventClick.value = false);\r\n pointerDownHandled = false;\r\n }\r\n\r\n function onMouseUp(args: MouseEvent) {\r\n handlePointerUp(args);\r\n detachFromPostMouseDownEvents();\r\n }\r\n\r\n function onTouchStart(args: TouchEvent) {\r\n handlePointerDown(args, args.changedTouches[0]);\r\n attachToPostTouchStartEvents();\r\n }\r\n\r\n function onTouchMove(args: TouchEvent) {\r\n const touch = getTouch(args);\r\n if (!touch){\r\n return;\r\n }\r\n handlePointerMove(touch);\r\n\r\n if (isDragging.value) {\r\n args.preventDefault();\r\n }\r\n }\r\n\r\n function onTouchEnd(args: TouchEvent) {\r\n const touch = getTouch(args);\r\n if (!touch){\r\n return;\r\n }\r\n handlePointerUp(touch);\r\n detachFromPostMouseDownEvents();\r\n }\r\n\r\n function attachToPostMouseDownEvents() {\r\n window.addEventListener(\"mousemove\", onMouseMove);\r\n window.addEventListener(\"mouseup\", onMouseUp);\r\n }\r\n\r\n function detachFromPostMouseDownEvents() {\r\n window.removeEventListener(\"mousemove\", onMouseMove);\r\n window.removeEventListener(\"mouseup\", onMouseUp);\r\n }\r\n\r\n function attachToPostTouchStartEvents() {\r\n // passive: false is important as chrome by default will disallow preventDefault for these \"expensive\" events\r\n // without preventDefault it might trigger the \"pull down to refresh\" gesture\r\n window.addEventListener(\"touchmove\", onTouchMove, { passive: false });\r\n window.addEventListener(\"touchend\", onTouchEnd);\r\n }\r\n\r\n function detachFromPostTouchStartEvents() {\r\n window.removeEventListener(\"touchmove\", onTouchMove);\r\n window.removeEventListener(\"touchend\", onTouchEnd);\r\n }\r\n\r\n onBeforeUnmount(() => {\r\n detachFromPostMouseDownEvents();\r\n detachFromPostTouchStartEvents();\r\n });\r\n\r\n function wrapOnClick(originalHandler: (args: MouseEvent) => void ) {\r\n\r\n return (args: MouseEvent) => {\r\n if (preventClick.value) {\r\n args.preventDefault();\r\n return;\r\n }\r\n if (originalHandler) {\r\n originalHandler(args);\r\n }\r\n };\r\n }\r\n\r\n return () => {\r\n const children: VNode[] = slots.default && slots.default() || [];\r\n\r\n if (children.length !== 1) {\r\n throw new Error(\"Should contain exactly 1 child\");\r\n }\r\n\r\n const child: VNode = children[0];\r\n child.props = child.props || {};\r\n child.props.onMousedown = onMouseDown;\r\n child.props.onTouchstart = onTouchStart;\r\n child.props.onClick = wrapOnClick(child.props.onClick);\r\n return child;\r\n };\r\n }\r\n});\r\n\r\nexport const UnmanagedDraggable = defineComponent({\r\n setup(_, { slots }) {\r\n\r\n const originalX = ref(0);\r\n const originalY = ref(0);\r\n\r\n const x = ref(originalX.value);\r\n const y = ref(originalY.value);\r\n\r\n function onStart(args: DragCallbackArgs) {\r\n x.value = originalX.value + args.movement.x;\r\n y.value = originalY.value + args.movement.y;\r\n }\r\n\r\n function onDrag(args: DragCallbackArgs) {\r\n x.value = originalX.value + args.movement.x;\r\n y.value = originalY.value + args.movement.y;\r\n }\r\n\r\n function onStop(args: DragCallbackArgs) {\r\n x.value = originalX.value + args.movement.x;\r\n y.value = originalY.value + args.movement.y;\r\n originalX.value = x.value;\r\n originalY.value = y.value;\r\n }\r\n\r\n return () => {\r\n\r\n const style: CSSProperties = {\r\n position: \"relative\",\r\n top: `${y.value}px`,\r\n left: `${x.value}px`,\r\n };\r\n\r\n const children: VNode[] = slots.default && slots.default() || [];\r\n\r\n if (children.length !== 1) {\r\n throw new Error(\"Should contain exactly 1 child\");\r\n }\r\n\r\n const child: VNode = children[0];\r\n child.props = child.props || {};\r\n child.props.style = {...child.props.style, ...style};\r\n child.dynamicProps = child.dynamicProps || [];\r\n child.dynamicProps.push(\"style\");\r\n\r\n return (\r\n \r\n {child}\r\n \r\n );\r\n };\r\n }\r\n});","import {\r\n defineComponent,\r\n PropType,\r\n reactive,\r\n computed,\r\n ref,\r\n CSSProperties\r\n} from 'vue';\r\nimport { Coordinate, DragCallbackArgs, Draggable } from './Draggable';\r\n\r\nexport const SortableList = defineComponent({\r\n props: {\r\n items: {\r\n type: Array as PropType>,\r\n required: true\r\n },\r\n template: {\r\n type: Function as PropType<(item: any, index: number) => JSX.Element>,\r\n required: true\r\n },\r\n onOrderChanged: {\r\n type: Function as PropType<(item: any, newIndex: number, oldIndex: number) => void>,\r\n required: true\r\n },\r\n keySelector: {\r\n type: Function as PropType<(item: any) => string>,\r\n required: true\r\n }\r\n },\r\n\r\n setup(props) {\r\n const dragState = reactive({\r\n indexBeingDragged: -1 as number,\r\n placeholderIndex: -1 as number,\r\n movement: { x: 0, y: 0 } as Coordinate,\r\n offset: { x: 0, y: 0} as Coordinate\r\n });\r\n\r\n const referencesRef = computed(\r\n () => props.items.map(() => ref(null))\r\n );\r\n\r\n function getPlaceholderIndex(indexBeingDragged: number, args: DragCallbackArgs): number {\r\n const references = referencesRef.value;\r\n if (references.length === 1) {\r\n return 0;\r\n }\r\n\r\n for (let i = 0; i < references.length; i++) {\r\n if (i === indexBeingDragged) {\r\n continue;\r\n }\r\n\r\n const currentElement: HTMLElement | null = references[i].value;\r\n\r\n if (!currentElement) {\r\n continue;\r\n }\r\n \r\n const topOffset: number = currentElement.offsetTop;\r\n if (args.offset.y + args.movement.y < topOffset) {\r\n return i;\r\n }\r\n }\r\n\r\n return references.length;\r\n }\r\n\r\n function onStart(index: number, args: DragCallbackArgs) {\r\n dragState.indexBeingDragged = index;\r\n dragState.placeholderIndex = getPlaceholderIndex(index, args);\r\n dragState.movement = args.movement;\r\n dragState.offset = args.offset;\r\n }\r\n\r\n function onDrag(index: number, args: DragCallbackArgs) {\r\n dragState.movement = args.movement;\r\n dragState.placeholderIndex = getPlaceholderIndex(index, args);\r\n }\r\n\r\n function onStop(index: number, args: DragCallbackArgs) {\r\n const placeholderIndex = getPlaceholderIndex(index, args);\r\n dragState.indexBeingDragged = -1;\r\n dragState.placeholderIndex = -1;\r\n dragState.movement = { x: 0, y: 0 };\r\n dragState.offset = { x: 0, y: 0 };\r\n\r\n if (index !== placeholderIndex) {\r\n const newIndex = placeholderIndex >= index\r\n ? placeholderIndex - 1\r\n : placeholderIndex; \r\n \r\n props.onOrderChanged(props.items[index], newIndex, index);\r\n }\r\n }\r\n\r\n function renderItem(index: number, item: unknown): JSX.Element {\r\n const style: CSSProperties = {\r\n padding: \"4px\",\r\n border: \"solid 1px lightgray\",\r\n marginBottom: \"4px\",\r\n backgroundColor: \"white\"\r\n };\r\n\r\n if (index === dragState.indexBeingDragged) {\r\n style.position = \"absolute\";\r\n const { offset, movement } = dragState;\r\n style.top = `${offset.y + movement.y}px`;\r\n style.left = `${offset.x + movement.x}px`;\r\n style.width = \"100%\";\r\n }\r\n\r\n return (\r\n onStart(index, args)}\r\n onDrag={(args) => onDrag(index, args)}\r\n onStop={(args) => onStop(index, args)}\r\n >\r\n {/* we should assign a key */}\r\n
      • \r\n {props.template(item, index)}\r\n
      • \r\n
        \r\n );\r\n }\r\n\r\n function renderPlaceholder(): JSX.Element {\r\n return (\r\n
      • \r\n placeholder\r\n
      • \r\n );\r\n }\r\n\r\n function renderItems(): JSX.Element[] {\r\n const elements: JSX.Element[] = [];\r\n const { placeholderIndex } = dragState;\r\n for (let i = 0; i < props.items.length; i++) {\r\n if (placeholderIndex === i) {\r\n elements.push(renderPlaceholder());\r\n }\r\n\r\n elements.push(renderItem(i, props.items[i]));\r\n }\r\n\r\n if (placeholderIndex === props.items.length) {\r\n elements.push(renderPlaceholder());\r\n }\r\n\r\n return elements;\r\n }\r\n\r\n return () => {\r\n return (\r\n
          \r\n {renderItems()}\r\n
        \r\n );\r\n };\r\n }\r\n});\r\n","import { defineComponent, PropType, ref } from 'vue';\r\nimport { FormTextInput } from '../views/TestPage';\r\nimport { ModelValueChanged, ModelValue } from '@/infrastructure/validation';\r\nimport { ValidationMessage } from './forms/TryOut';\r\n\r\nexport const InlineTextEdit = defineComponent({\r\n props: {\r\n value: {\r\n type: Object as PropType>,\r\n required: true\r\n },\r\n onChange: {\r\n type: Function as PropType<(value: ModelValueChanged) => void>\r\n }\r\n },\r\n\r\n setup(props) {\r\n\r\n const isEditing = ref(false);\r\n\r\n function switchToEdit() {\r\n isEditing.value = true;\r\n }\r\n\r\n function onChange(patch: ModelValueChanged) {\r\n if (props.onChange) {\r\n props.onChange(patch);\r\n }\r\n isEditing.value = false;\r\n }\r\n\r\n return () => {\r\n if (isEditing.value) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n {props.value.value || \"Click here\"}\r\n \r\n \r\n );\r\n }\r\n }; \r\n }\r\n})","import {\r\n defineComponent,\r\n} from \"vue\";\r\nimport { SortableList } from '@/components/SortableList';\r\nimport { UnmanagedDraggable } from '@/components/Draggable';\r\nimport {\r\n useModelValidation,\r\n WrappedValue,\r\n ModelValue,\r\n forCollection,\r\n forProperties,\r\n notEmpty,\r\n forItems\r\n} from '@/infrastructure/validation';\r\nimport { InlineTextEdit } from '@/components/InlineEdit';\r\nimport { Checkbox } from '@/components/forms/Checkbox';\r\n\r\ntype Mailbox = {\r\n id: number | null;\r\n address: string;\r\n};\r\n\r\nconst MailList = defineComponent({\r\n setup() {\r\n\r\n const { modelState: items, patchModel } = useModelValidation(\r\n [\r\n {\r\n id: 1,\r\n address: \"one\"\r\n },\r\n {\r\n id: 2,\r\n address: \"two\"\r\n },\r\n {\r\n id: 3,\r\n address: \"three\"\r\n },\r\n {\r\n id: 4,\r\n address: \"four\"\r\n },\r\n {\r\n id: 5,\r\n address: \"five\"\r\n },\r\n {\r\n id: 6,\r\n address: \"six\"\r\n },\r\n {\r\n id: 7,\r\n address: \"seven\"\r\n },\r\n {\r\n id: 8,\r\n address: \"eight\"\r\n },\r\n {\r\n id: 9,\r\n address: \"nine\"\r\n },\r\n {\r\n id: 10,\r\n address: \"ten\"\r\n },\r\n {\r\n id: 11,\r\n address: \"eleven\"\r\n },\r\n {\r\n id: 12,\r\n address: \"twelve\"\r\n }\r\n ],\r\n forCollection(\r\n forItems(\r\n forProperties({\r\n address: notEmpty\r\n })\r\n )\r\n )\r\n );\r\n\r\n function renderItem(\r\n item: ModelValue>,\r\n index: number\r\n ): JSX.Element {\r\n return(\r\n {\r\n const itemToPatch = items[index];\r\n itemToPatch.value.address = {...patch };\r\n const arrayPatch = [];\r\n arrayPatch[index] = itemToPatch;\r\n patchModel(arrayPatch);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n function onOrderChanged(_: ModelValue>, newIndex: number, oldIndex: number) {\r\n items.splice(newIndex, 0, ...items.splice(oldIndex, 1));\r\n }\r\n\r\n function keySelector(item: ModelValue>) {\r\n return item.value.id.value!.toString();\r\n }\r\n\r\n return () => {\r\n\r\n return (\r\n <>\r\n
        \r\n \r\n
        \r\n \r\n );\r\n };\r\n }\r\n})\r\n\r\nexport const Dragging = defineComponent({\r\n setup() {\r\n return () => {\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
        \r\n \r\n
        \r\n \r\n
        \r\n
        \r\n \r\n );\r\n };\r\n }\r\n});\r\n","import { RouteRecordRaw, createRouter, createWebHistory } from 'vue-router';\r\nimport about from '@/views/about';\r\nimport home from '@/views/home';\r\nimport { TestPage } from '@/views/TestPage';\r\nimport { Dragging } from '@/views/Dragging';\r\n\r\nconst routes: RouteRecordRaw[] = [\r\n {\r\n path: '/',\r\n name: 'Home',\r\n component: home\r\n },\r\n {\r\n path: '/about',\r\n name: 'About',\r\n component: about\r\n },\r\n {\r\n path: '/test-page',\r\n name: 'TestPage',\r\n component: TestPage\r\n },\r\n {\r\n path: '/dragging',\r\n name: 'Dragging',\r\n component: Dragging\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import \"@/styles/reset.less\";\r\nimport \"@/styles/test.less\";\r\nimport \"@/styles/scrollbar.less\";\r\nimport { defineComponent } from 'vue';\r\nimport { RouterView, RouterLink } from 'vue-router';\r\n\r\nexport default defineComponent({\r\n setup() {\r\n\r\n return () => {\r\n \r\n return(\r\n <>\r\n
        \r\n
        \r\n

        Hello world

        \r\n
        \r\n Home |\r\n About\r\n Test page\r\n Dragging\r\n
        \r\n \r\n \r\n );\r\n };\r\n }\r\n});","import { createApp } from \"vue\";\r\nimport router from './router'\r\nimport App from './app';\r\n\r\ncreateApp(App).use(router).mount('#app')\r\n","module.exports = __webpack_public_path__ + \"img/logo.82b9c7a5.png\";"],"sourceRoot":""}