{"version":3,"file":"kendo.dockmanager.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodockmanager","js","this","$","undefined$1","kendo","window","Widget","ui","NS","extend","percentageUnitsRegex","DOCK_MANAGER_TOOLBAR","isPlainObject","TOOLBAR_TEMPLATE","KSTATIC_PANE","KPANE_TABBED","SPLITTER","KSPLITBAR","PANE_SIZING_PROP","HORIZONTAL","VERTICAL","KHIDDEN","KBUTTON","MAX_NUMBER_VALUE","Number","MAX_SAFE_INTEGER","KPANE","KPANES_CONTAINER","KPANE_ACTIONS","KDOCK_INDICATOR","KDOCK_NAVIGATOR","KDOCK_PREVIEW","KSELECTED","KACTIVE","KTABSTRIP","KSPLITBAR_DRAGGABLE","SPLIT","TAB","HEIGHT","WIDTH","TOP","BOTTOM","LEFT","RIGHT","MIDDLE","CLICK","PIN","UNPIN","UNSHIFT","PANE","paneSelector","uid","attr","unpinnedResizeSplitbar","UID_ATTR","INDICATOR_ATTR","ACTION_ATTR","INDICATOR_TEMPLATE","NAVIGATOR_TEMPLATE","CLOSE","DOCK","INNER_DOCK","RESIZE","DRAG","DRAGSTART","DRAGEND","isPercentageSize","size","test","DockSplitter","init","element","options","that","fn","call","_marker","guid","substring","addClass","orientation","_initPanes","_initResizable","notify","panes","events","paneElements","children","panesCount","length","sizedPanes","i","paneElement","eq","pane","css","collapsed","splitter","insertAfter","push","pop","markerAttribute","_resizable","Resizable","handle","clickMoveClick","invalidClass","resizeend","find","remove","resize","e","delta","splitterBarIndex","_getElementIndex","currentTarget","splitterBar","rtlModifier","support","isRtl","x","y","leftPane","rightPane","_dragSplitterBar","trigger","start","_onResizeStart","bind","_getAdjacentPanes","leftPaneNewSize","computedSize","isLeftPaneSizeInBounds","min","max","panesWithoutSize","_getPaneElements","filter","style","canResizeBothPanes","_resizePane","leftPaneIndex","rightPaneIndex","leftPaneELement","_getPaneElement","rightPaneELement","_getPane","leftPaneSize","_getPaneOffsetSize","rightPaneSize","totalPaneSize","splitterSize","_getElementClientSize","getPixelSize","paneSize","_calculatePixelSize","leftPaneMaxSize","rightPaneMaxSize","_getAdjacentPanesMaxSize","rightMaxPixelSize","leftMaxPixelSize","index","collapsible","constrainedSize","value","Math","newSize","toPercentages","parseFloat","toPixel","_setPaneSize","_allExpandedPanesHaveSize","expandedPanes","paneIndex","_getPaneSizes","containerSize","numericSize","_getElementOffsetSize","rect","getBoundingClientRect","width","height","_getElementSize","sizeType","_getPaneIndex","indexOf","leftPaneMinSize","leftPaneMaxPixelSize","rightPaneMinSize","rightPaneMaxPixelSize","stopPropagation","_addResizeOverlays","_addResizeOverlay","overlay","append","Array","from","hasClass","childrenSelector","parent","matches","destroy","off","empty","DockManager","panesContainer","appendTo","_processPanes","rootPane","_refreshToolbar","_createPane","_bindEvents","_initNavigator","_initUnpinnedResizable","name","type","paneDefaults","visible","closeable","actions","icon","shouldAdd","unpinnable","unpinned","minimizable","maximizable","indicators","top","left","transform","previewTop","previewLeft","rotate","hoveredPaneHeight","draggedPaneHeight","hoveredPaneWidth","draggedPaneWidth","togglePane","id","_getPaneById","_togglePane","removePane","_removePane","getOptions","setOptions","currentOptions","deepExtend","_unpinnedResizable","unpinnedContainer","containerWidth","on","_toolbarButtonClick","_hideUnpinnedPanes","_pinPaneClick","_closePane","_displayDockPreview","_hideDockPreview","currentlyOpened","unpinnedContainerVisible","is","_toolbar","removeClass","itemUid","preventDefault","_showUnpinnedPane","paneUid","toolbarWidth","outerWidth","_findPaneByUid","hasUnpinnedSize","unpinnedSize","button","isTabbed","action","closest","isUnpinned","parentPane","parentUid","eventData","_refreshRootPane","toggleClass","event","splice","_shouldHideParent","some","_refreshPane","parentElement","_extendPane","forEach","childPane","j","subItem","unpinnedPanes","_unpinnedPanes","unpinnedPannesContainer","insertBefore","prepend","html","renderButton","fillMode","_paneHeader","wrapper","refresh","rootPaneElement","_createSplitPane","splitterElement","splitterOptions","paneOptions","_createUnpinnedPane","_updatePaneSize","ev","_createTabPane","tabStripElement","tabContainer","selectedPane","selected","tab","title","contentElement","_addActions","kendoTabStrip","animation","_createContentPane","content","template","data","isUnnpinned","actionsContainer","string","charAt","toUpperCase","slice","result","concat","header","tabHeader","found","prop","params","navigatorDraggable","Draggable","autoScroll","hint","actionsHtml","_getActionButtons","hintTemplate","dragstart","_dragStart","dragend","_dragEnd","drag","_drag","target","draggedPane","_displayGlobalIndicators","draggableEvent","hoveredIndicator","hide","_updateLayout","_showHiddenPanes","hoveredPane","currentPane","elementUnderCursor","navigator","currentPaneUid","prevPaneUid","position","dockable","innerDock","_showTab","_showPane","tabstrip","show","activateTab","splitbar","siblings","_hideDraggedPane","draggedElement","_hideTab","_hidePane","prevElement","prev","nextElement","next","isActive","buttons","container","each","_","clone","indicator","isGlobalIndicator","indicatorName","indicatorUid","indicatorData","previewElement","containerHeight","outerHeight","existingPreview","preview","location","draggedPaneParent","draggedPaneIndex","_tabDock","_splitDock","_adjustSiblingSizes","targetPane","isGlobalDock","targetPaneParent","targetPaneIndex","dimension","newParentPane","unshift","_getSiblings","parentSize","draggedPaneSize","newParentSize","noSizePanes","freeSpace","_calculateNewSize","noSizePane","proportion","noUnitSize","unit","replace","p","plugin","jQuery"],"sources":["kendo.dockmanager.js"],"mappings":"CAAA,SAAWA,EAAQC,GACI,iBAAZC,SAA0C,oBAAXC,OAAyBA,OAAOD,QAAUD,EAAQG,QAAQ,iBAAkBA,QAAQ,qBAAsBA,QAAQ,qBAAsBA,QAAQ,mBAAoBA,QAAQ,wBAAyBA,QAAQ,sBAAuBA,QAAQ,yBAChQ,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,iBAAkB,qBAAsB,qBAAsB,mBAAoB,wBAAyB,sBAAuB,yBAA0BJ,KAChND,EAA+B,oBAAfO,WAA6BA,WAAaP,GAAUQ,MAAcC,iBAAmBT,EAAOS,kBAAoB,CAAC,EAAGT,EAAOS,iBAAiBC,GAAKT,IACrK,CAJD,CAIGU,MAAM,WA0nDL,OAjnDA,SAAUC,EAAGC,GACT,MAAMC,EAAQC,OAAOD,MACjBE,EAASF,EAAMG,GAAGD,OAClBE,EAAK,oBACLD,EAAKH,EAAMG,GACXE,EAASP,EAAEO,OAEXC,EAAuB,kBAGvBC,GAFgBT,EAAEU,cAEK,0BACvBC,EAAmB,eAAeF,kDAGlCG,EAAe,gBAEfC,EAAe,gBACfC,EAAW,aACXC,EAAY,aAIZC,EAAmB,aACnBC,EAAa,aACbC,EAAW,WACXC,EAAU,WACVC,EAAU,WACVC,EAAmBC,OAAOC,iBAC1BC,EAAQ,SAERC,EAAmB,gCAEnBC,EAAgB,iBAChBC,EAAkB,mBAClBC,EAAkB,mBAClBC,EAAgB,oBAChBC,EAAY,aACZC,EAAU,WACVC,EAAY,aACZC,EAAsB,uBACtBC,EAAQ,QACRC,EAAM,MAENC,EAAS,SACTC,EAAQ,QACRC,EAAM,MACNC,EAAS,SACTC,EAAO,OACPC,EAAQ,QACRC,EAAS,SACTC,EAAQ,QACRC,EAAM,MACNC,EAAQ,QACRC,EAAU,UAEVC,EAAO,eAAevB,iBAAuBZ,YAC7CoC,EAAeC,GAAO,IAAIzB,KAAStB,EAAMgD,KAAK,WAAWD,MAUzDE,EAAyB,gDAAgDlB,kIAGzEmB,EAAWlD,EAAMgD,KAAK,OACtBG,EAAiBnD,EAAMgD,KAAK,aAC5BI,EAAcpD,EAAMgD,KAAK,UAIzBK,EAAqB,eAAe5B,oaAOpC6B,EAAqB,eAAe5B,uHACqCyB,gkBAOEA,okBAOCA,kkBAOFA,ikBAOEA,sfAW5EI,EAAQ,QACRC,EAAO,OACPC,EAAa,YACbC,GAAS,SACTC,GAAO,OACPC,GAAY,YACZC,GAAU,UAOd,SAASC,GAAiBC,GACtB,OAAOzD,EAAqB0D,KAAKD,EACrC,CAoCA,MAAME,GAAe/D,EAAOG,OAAO,CAC/B6D,KAAM,SAASC,EAASC,GACpB,MAAMC,EAAOxE,KAEbK,EAAOoE,GAAGJ,KAAKK,KAAKF,EAAMF,EAASC,GACnCA,EAAUtE,EAAEO,QAAO,EAAM,CAAC,EAAG+D,GAC7BC,EAAKG,QAAUxE,EAAMyE,OAAOC,UAAU,EAAG,GACzCL,EAAKF,QAAQQ,SAAS,GAAG/D,qBAA6BA,KAAYwD,EAAQQ,uCAC1EP,EAAKQ,aACLR,EAAKS,iBACL9E,EAAM+E,OAAOV,EACjB,EAEAD,QAAS,CACLQ,YAAa,aACbI,MAAO,IAGXC,OAAQ,CACJvB,IAGJmB,WAAY,WACR,MAAMR,EAAOxE,KACPqF,EAAeb,EAAKF,QAAQgB,WAC5BC,EAAaF,EAAaG,OAG1BC,GAFcjB,EAAKD,QAAQQ,YACT5E,EAAMgD,KAAK,UAChB,IAEnB,IAAK,IAAIuC,EAAI,EAAGA,EAAIH,EAAYG,IAAK,CACjC,MAAMC,EAAcN,EAAaO,GAAGF,GACpC,IAAIG,EAAOrB,EAAKD,QAAQY,MAAMO,GAgB9B,GAdKG,IACDA,EAAOrB,EAAKD,QAAQY,MAAMO,GAAK,CAAC,GAGpCG,EAAK3B,KAAO2B,EAAK3B,MAAQ,OACzByB,EAAYxC,KAAKhD,EAAMgD,KAAK,OAAQ0C,EAAK3C,KAC5BC,KAAK,OAAQ,SACb2C,IAAI,aAAcD,EAAK3B,MACvBY,WAETe,EAAKE,WACLF,EAAKC,IAAI,UAAW,QAGpBJ,EAAIH,EAAa,IAAMf,EAAKD,QAAQY,MAAMO,EAAI,GAAGK,UAAW,CAtG/C9F,EAAE,eAAee,KAAaA,MAA3CgF,EAuGwBxB,GAvGyCD,QAAQQ,eAAe7C,KAAuB8D,EAASzB,QAAQQ,gBAAgB5E,EAAMgD,KAAK,cAAc6C,EAASrB,uGAyGzKsB,YAAYN,EACzB,CAEIE,EAAK3B,MACLuB,EAAWS,KAAKP,EAExB,CA/GO,IAACK,EAiHkB,IAAtBP,EAAWD,QAAgBD,EAAa,GACxCE,EAAWU,MAAMrB,SAASjE,EAElC,EAEAoE,eAAgB,WACZ,MAAMT,EAAOxE,KACP+E,EAAcP,EAAKD,QAAQQ,YAC3BqB,EAAkBjG,EAAMgD,KAAK,UAEnCqB,EAAK6B,WAAa,IAAIlG,EAAMG,GAAGgG,UAAU9B,EAAKF,QAAS,CACnDS,YAAaA,EACbwB,OAAQ,IAAIH,KAAmB5B,EAAKG,YAAYzC,KAAuB6C,KACvEyB,eAAgBhC,EAAKD,QAAQiC,eAC7BC,aAAc,qBAAuB1B,EACrC2B,UAAW,WACPlC,EAAKF,QAAQqC,KAAK,uBAAuBC,QAC7C,EACAC,OAAQ,SAASC,GAEb,IAAIC,EACJ,MAAMC,EAAmBxC,EAAKyC,iBAAiBH,EAAEI,cAAe,IAAIlG,KAC9DmG,EAAcL,EAAEI,cAEtB,GAAInC,IAAgB7D,EAAY,CAC5B,MAAMkG,EAAcjH,EAAMkH,QAAQC,MAAM9C,EAAKF,UAAY,EAAI,EAC7DyC,EAAQD,EAAES,EAAER,MAAQK,CACxB,MACIL,EAAQD,EAAEU,EAAET,MAGhB,MAAMU,SAAEA,EAAQC,UAAEA,GAAclD,EAAKmD,iBAAiBR,EAAaH,EAAkBD,GACrFvC,EAAKoD,QAAQ/D,GAAQ,CAAE4D,SAAUA,EAAUC,UAAWA,GAC1D,EACAG,MAAOrD,EAAKsD,eAAeC,KAAKvD,IAGxC,EAEAmD,iBAAkB,SAASR,EAAaH,EAAkBD,GACtD,MAAMvC,EAAOxE,MACPyH,SAAEA,EAAQC,UAAEA,GAAclD,EAAKwD,kBAAkBb,EAAaH,GAE9DiB,EAAkBR,EAASS,aAAenB,EAC1CoB,EAAyBF,EAAkBR,EAASW,KAAOH,EAAkBR,EAASY,IAEtFC,EAAmB9D,EAAK+D,mBAAmBC,QAAOjB,IAAMA,EAAEkB,MAAMxH,KAChEyH,GAAsBjB,EAASvD,MAAQwD,EAAUxD,OAASoE,EAAiB9C,OAAS,EAY1F,OAVKiC,EAASvD,MAAQwD,EAAUxD,MAASwE,EACjCP,IACA3D,EAAKmE,YAAYlB,EAAUV,GAC3BvC,EAAKmE,YAAYjB,GAAYX,IAE1BW,EAAUxD,KACjBM,EAAKmE,YAAYjB,GAAYX,GAE7BvC,EAAKmE,YAAYlB,EAAUV,GAExB,CAAEU,WAAUC,YACvB,EAEAM,kBAAmB,SAASb,EAAaH,GACrC,MAAMxC,EAAOxE,KACP4I,EAAgB5B,EAChB6B,EAAiB7B,EAAmB,EAEpC8B,EAAkBtE,EAAKuE,gBAAgBH,GACvCI,EAAmBxE,EAAKuE,gBAAgBF,GAExCpB,EAAWjD,EAAKyE,SAASL,GACzBlB,EAAYlD,EAAKyE,SAASJ,GAE1BK,EAAe1E,EAAK2E,mBAAmBP,GACvCQ,EAAgB5E,EAAK2E,mBAAmBN,GAExCQ,EAAgBH,EAAeE,EAC/BE,EAAe9E,EAAK+E,sBAAsB/E,EAAKF,QAASE,EAAKD,QAAQQ,aACrEyE,EAAeC,GAAYjF,EAAKkF,oBAAoBD,EAAUH,IAE9DK,gBAAEA,EAAeC,iBAAEA,GAAqBpF,EAAKqF,yBAAyBjB,EAAeC,GACrFiB,EAAoBN,EAAa9B,GAAaA,EAAUW,KACxD0B,EAAmBP,EAAa/B,GAAYA,EAASY,KAE3D,MAAO,CACHZ,SAAU,CACNuC,MAAOpB,EACPV,aAAcgB,EACdd,IAAKoB,EAAa/B,GAAYA,EAASW,OAAU0B,EAAoBT,EAAgBS,EAAoB,IAAO,EAChHzB,IAAKsB,EACLzF,KAAM4E,EAAgBL,MAAMxH,GAC5BgJ,YAAaxC,GAAYA,EAASwC,YAClC/G,IAAKuE,EAASvE,KAElBwE,UAAW,CACPsC,MAAOnB,EACPX,aAAckB,EACdhB,IAAKoB,EAAa9B,GAAaA,EAAUU,OAAS2B,EAAmBV,EAAgBU,EAAmB,IAAM,EAC9G1B,IAAKuB,EACL1F,KAAM8E,EAAiBP,MAAMxH,GAC7BgJ,YAAavC,GAAaA,EAAUuC,YACpC/G,IAAKwE,EAAUxE,KAG3B,EAEAyF,YAAa,SAAS9C,EAAMkB,GACxB,MAAMvC,EAAOxE,KACPkK,GA3KCC,EA2KuBtE,EAAKqC,aAAenB,EA3KpCqB,EA2K2CvC,EAAKuC,IA3K3CC,EA2KgDxC,EAAKwC,IA1KrE+B,KAAKhC,IAAIC,EAAK+B,KAAK/B,IAAID,EAAK+B,KADvC,IAAeA,EAAO/B,EAAKC,EA4KnB,IAAIgC,EAAU,GAEd,GAAIpG,GAAiB4B,EAAK3B,MAAO,CAE7BmG,EA5LZ,SAAuBF,GACnB,MAAO,GAAGA,IACd,CA0LsBG,CAAc,IAAMJ,EADT1F,EAAK+E,sBAAsB/E,EAAKF,QAASE,EAAKD,QAAQQ,aAE/E,MACIsF,EA1LZ,SAAiBF,GACb,OAAOhK,EAAMoK,WAAWJ,GAAS,IACrC,CAwLsBK,CAAQN,GAEtBrE,EAAK3B,KAAOmG,EACZ7F,EAAKiG,aAAa5E,EAAKmE,MAAOK,EAClC,EAEAK,0BAA2B,WACvB,MACMC,EADO3K,KACcuE,QAAQY,MAAMqD,QAAOjB,IAAKA,EAAExB,YAEvD,QAAI4E,EAAcnF,QACPmF,EAAcnC,QAAOjB,GAAIA,EAAErD,OAAMsB,MAIhD,EAEAiF,aAAc,SAASG,EAAW1G,GAC9B,MACMyB,EADO3F,KACY+I,gBAAgB6B,GAEpCjF,IAHQ3F,KAOH0K,6BACNzK,EAAE0F,GAAab,SAASjE,GAG5B8E,EAAY8C,MAAMxH,GAAoBiD,EAC1C,EAEA2G,cAAe,SAASD,GACpB,MAAMpG,EAAOxE,KACPsJ,EAAe9E,EAAK+E,sBAAsB/E,EAAKF,QAASE,EAAKD,QAAQQ,aACrEc,EAAOrB,EAAKyE,SAAS2B,GAK3B,MAAO,CACH1G,KALaM,EAAK2E,mBAAmByB,GAMrCxC,IALgBvC,GAAQA,EAAKuC,IAAM5D,EAAKkF,oBAAoB7D,EAAKuC,IAAKkB,GAAgB,EAMtFjB,IALgBxC,GAAQA,EAAKwC,IAAM7D,EAAKkF,oBAAoB7D,EAAKwC,IAAKiB,GAAgBhI,EAO9F,EAEAoI,oBAAqB,SAASxF,EAAM4G,GAChC,IAAIC,EAAc5K,EAAMoK,WAAWrG,GAMnC,OAJID,GAAiBC,KACjB6G,EAAeD,EAAgBC,EAAc,KAG1CA,CACX,EAEA5B,mBAAoB,SAASyB,GACzB,MAAMpG,EAAOxE,KACP2F,EAAcnB,EAAKuE,gBAAgB6B,GAEzC,OADapG,EAAKwG,sBAAsBrF,EAAanB,EAAKD,QAAQQ,YAEtE,EAGAiG,sBAAuB,SAAS1G,EAASS,GACrC,IAAKT,EACD,OAAO,EAGX,MAAM2G,EAAO3G,EAAQ4G,wBAErB,OAAInG,IAAgB7D,EACT+J,EAAKE,MAELF,EAAKG,MAEpB,EAEA7B,sBAAuB,SAASjF,EAASS,GAGrC,OAFa/E,KAEDqL,gBAAgB/G,EAASS,EAAa,SACtD,EAEAsG,gBAAiB,SAAS/G,EAASS,EAAauG,GAC5C,OAAKhH,GAILA,EAAUA,EAAQ,GAEdS,IAAgB7D,EACToD,EAAQ,GAAGgH,UAEXhH,EAAQ,GAAGgH,YARX,CAUf,EAEArC,SAAU,SAAS2B,GAGf,OAFa5K,KAEAuE,QAAQY,OAAS,IAAIyF,EACtC,EAEAW,cAAe,SAAS1F,GAGpB,OAFa7F,KAEDuE,QAAQY,MAAMqG,QAAQ3F,EACtC,EAEAgE,yBAA0B,SAASjB,EAAeC,GAC9C,MAEI3E,KAAMgF,EACNd,IAAKqD,EACLpD,IAAKqD,GAJI1L,KAKJ6K,cAAcjC,IAGnB1E,KAAMkF,EACNhB,IAAKuD,EACLtD,IAAKuD,GAVI5L,KAWJ6K,cAAchC,GAEjBQ,EAAgBH,EAAeE,EAKrC,MAAO,CACHO,gBAJoBS,KAAKhC,IAAIsD,EAAsBrC,EAAgBsC,GAKnE/B,iBAJqBQ,KAAKhC,IAAIwD,EAAuBvC,EAAgBoC,GAM7E,EAEA3D,eAAgB,SAAShB,GAGrBA,EAAE+E,kBAEF,MAAM7E,EAJOhH,KAIiBiH,iBAAiBH,EAAEI,cAAe,IAAInG,KAJvDf,KAMR8L,mBAAmB9E,EAC5B,EAEA8E,mBAAoB,SAAS9E,GACZhH,KAER+L,kBAAkB/E,GAFVhH,KAGR+L,kBAAkB/E,EAAmB,EAC9C,EAEA+E,kBAAmB,SAASnB,GACxB,MACMjF,EADO3F,KACY+I,gBAAgB6B,GAEzC,IAAKjF,EACD,OAGJ,MAAMqG,EAAU/L,EAAE,oDAElBA,EAAE0F,GAAasG,OAAOD,EAC1B,EAGAjD,gBAAiB,SAAS6B,GAGtB,OAFa5K,KACMuI,mBACNqC,EACjB,EAEArC,iBAAkB,WAGd,OADc2D,MAAMC,KADPnM,KACiBsE,QAAQgB,YAAc,IAAIkD,QAAOjB,GAAKtH,EAAEsH,GAAG6E,SAAS,WAAanM,EAAEsH,GAAG6E,SAAS,eAEjH,EAEAnF,iBAAkB,SAAS3C,EAAS+H,GAChC,IAAK/H,EACD,MAAO,GAAGkH,QAAQlH,GAGtB,IAAIgB,EAAW4G,MAAMC,KAAK7H,EAAQgI,SAAShH,YAM3C,OAJI+G,IACA/G,EAAWA,EAASkD,QAAOjB,GAAKA,EAAEgF,QAAQF,MAGvCH,MAAMC,KAAK7G,GAAUkG,QAAQlH,EAAQ,GAChD,EAEAkI,QAAS,WACL,MAAMhI,EAAOxE,KAEbK,EAAOoE,GAAG+H,QAAQ9H,KAAKF,GAEvBA,EAAKF,QAAQmI,IAAIlM,GACjBiE,EAAKF,QAAQoI,QAEblI,EAAK6B,WAAWmG,UAChBrM,EAAMqM,QAAQhI,EAAKF,QACvB,IAGEqI,GAActM,EAAOG,OAAO,CAC9B6D,KAAM,SAASC,EAASC,GACpB,MAAMC,EAAOxE,KAEbK,EAAOoE,GAAGJ,KAAKK,KAAKF,EAAMF,EAASC,GACnCA,EAAUtE,EAAEO,QAAO,EAAM,CAAC,EAAG+D,GAC7BC,EAAKF,QAAQQ,SAtiBF,kBAwiBXN,EAAKoI,eAAiB3M,EAAE,eAAeyB,SAAwBmL,SAASrI,EAAKF,SAC7EE,EAAKsI,cAActI,EAAKD,QAAQwI,UAChCvI,EAAKwI,kBACLxI,EAAKyI,YAAYzI,EAAKoI,eAAgBpI,EAAKD,QAAQwI,UACnDvI,EAAK0I,cACL1I,EAAK2I,iBACL3I,EAAK4I,yBAELjN,EAAM+E,OAAOV,EACjB,EAEAY,OAAQ,CACJ1B,EACAb,EACAC,EACAa,EACAC,EACAC,GACAC,GACAC,GACAC,IAGJO,QAAS,CACL8I,KAAM,cACNN,SAAU,CACNO,KAAMnL,EACN4C,YAAa7D,EACbiE,MAAO,KAIfoI,aAAc,CACVC,SAAS,EACTC,WAAW,EACX1H,WAAW,EACX7B,KAAM,IAGVwJ,QAAS,CACL,CACIL,KAAM,MACNM,KAAM,QACNC,UAAW/H,GAAQA,EAAKgI,YAAchI,EAAKgI,WAAWC,UACxD,CACET,KAAM,QACNM,KAAM,MACNC,UAAW/H,GAAQA,EAAKgI,aAAehI,EAAKgI,WAAWC,UACzD,CACET,KAAM,WACNM,KAAM,WACNC,UAAW/H,GAAQA,EAAKkI,aAC1B,CACEV,KAAM,WACNM,KAAM,WACNC,UAAW/H,GAAQA,EAAKmI,aAC1B,CACEX,KAAM,QACNM,KAAM,IACNC,UAAW/H,GAA0B,GAAlBA,EAAK4H,WAC1B,CACEJ,KAAM,OACNM,KAAM,gBACNC,UAAW/H,IAAQ,IAI3BoI,WAAY,CACR,CACIZ,KAAM9K,EACN2L,IAAK,EACLC,KAAM,MACNC,UAAW,qBACXC,WAAY,IAAM,EAClBC,YAAa,IAAM,EACnBC,OAAQ,QACV,CACElB,KAAM7K,EACN0L,IAAK,OACLC,KAAM,MACNC,UAAW,yBACXC,WAAY,CAACG,EAAmBC,IAAsBD,EAAoBC,EAC1EH,YAAa,IAAM,EACnBC,OAAQ,UACV,CACElB,KAAM5K,EACNyL,IAAK,MACLC,KAAM,EACNC,UAAW,qBACXC,WAAY,IAAM,EAClBC,YAAa,IAAM,EACnBC,OAAQ,UACV,CACElB,KAAM3K,EACNwL,IAAK,MACLC,KAAM,OACNC,UAAW,yBACXC,WAAY,IAAM,EAClBC,YAAa,CAACI,EAAkBC,IAAqBD,EAAmBC,EACxEJ,OAAQ,SACV,CACElB,KAAM1K,EACN0L,WAAY,IAAM,EAClBC,YAAa,IAAM,IAI3BM,WAAY,SAASC,GACjB,MAAMrK,EAAOxE,KACb6F,EAAOrB,EAAKsK,aAAatK,EAAKD,QAAQwI,SAAU,KAAM8B,GAElDhJ,GAAQ3F,GACRsE,EAAKuK,YAAYlJ,EAEzB,EAEAmJ,WAAY,SAASH,GACjB,MAAMrK,EAAOxE,KACP6F,EAAOrB,EAAKsK,aAAatK,EAAKD,QAAQwI,SAAU,KAAM8B,GAExDhJ,GAAQ3F,GACRsE,EAAKyK,YAAYpJ,EAEzB,EAEAqJ,WAAY,WAER,OADalP,KACDuE,OAChB,EAEA4K,WAAY,SAAS5K,GACjB,MAAMC,EAAOxE,KACb,IAAIoP,EAAiB5K,EAAK0K,aAC1B/O,EAAMkP,WAAWD,EAAgB7K,GAEjCC,EAAKgI,UACLhI,EAAKF,QAAQoI,QAEblI,EAAKH,KAAKG,EAAKF,QAAS8K,EAE5B,EAEAhC,uBAAwB,WACpB,MAAM5I,EAAOxE,KAEbwE,EAAK8K,mBAAqB,IAAInP,EAAMG,GAAGgG,UAAU9B,EAAK+K,kBAAmB,CACrExK,YAAa7D,EACbqF,OAAQ,yDACRM,OAAQ,SAASC,GACb,MAAMC,EAAQD,EAAES,EAAER,MACZyI,EAAiBhL,EAAK+K,kBAAkBpE,QAE9C3G,EAAK+K,kBAAkBpE,MAAMqE,EAAiBzI,EAClD,GAER,EAEAmG,YAAa,WACT,MAAM1I,EAAOxE,KAEbwE,EAAKF,QAAQmL,GAAG7M,EAAQrC,EAAI,4BAA4Bc,IAAWmD,EAAKkL,oBAAoB3H,KAAKvD,IACjGA,EAAKF,QAAQmL,GAAG7M,EAAQrC,EAAI,IAAImB,IAAoB8C,EAAKmL,mBAAmB5H,KAAKvD,IACjFA,EAAKF,QAAQmL,GAAG7M,EAAQrC,EAAI,IAAIc,KAAWkC,cAAwBlC,KAAWkC,aAAwBiB,EAAKoL,cAAc7H,KAAKvD,IAC9HA,EAAKF,QAAQmL,GAAG7M,EAAQrC,EAAI,IAAIc,KAAWkC,aAAwBiB,EAAKqL,WAAW9H,KAAKvD,IACxFA,EAAKF,QAAQmL,GAAG,aAAelP,EAAI,IAAIqB,IAAmB4C,EAAKsL,oBAAoB/H,KAAKvD,IACxFA,EAAKF,QAAQmL,GAAG,aAAelP,EAAI,IAAIqB,IAAmB4C,EAAKuL,iBAAiBhI,KAAKvD,GACzF,EAEAmL,mBAAoB,SAAS7I,GACzB,MAAMtC,EAAOxE,KAEPgQ,EADgBxL,EAAK+K,kBAAkB5I,KAAK,IAAIlF,KAChB+G,OAAO,YACvCyH,EAA2BzL,EAAK+K,kBAAkBW,GAAG,YAE3D,GAAIF,GAAmBC,EAGnB,OAFAzL,EAAK2L,SAASxJ,KAAK,IAAI5E,KAAaqO,YAAYrO,QAChDyC,EAAK+K,kBAAkBzK,SAAS1D,EAGxC,EAEAsO,oBAAqB,SAAS5I,GAC1B,MAAMtC,EAAOxE,KACPqQ,EAAUpQ,EAAE6G,EAAEI,eAAe/D,KAAKE,GAElC2M,EADgBxL,EAAK+K,kBAAkB5I,KAAK,IAAIlF,KAChB+G,OAAO,YACvCyH,EAA2BzL,EAAK+K,kBAAkBW,GAAG,YAE3DpJ,EAAEwJ,iBACF9L,EAAK2L,SAASxJ,KAAK,IAAItF,KAAW+O,YAAYrO,GAE1CiO,EAAgB7M,KAAKE,KAAcgN,GAAWJ,EAC9CzL,EAAK+K,kBAAkBzK,SAAS1D,GAIpCoD,EAAK+L,kBAAkBF,EAC3B,EAEAE,kBAAmB,SAASC,GACxB,MAAMhM,EAAOxE,KACPyQ,EAAejM,EAAK2L,SAASO,aAC7B7K,EAAOrB,EAAKmM,eAAeH,GAC3BI,EAAkB/K,EAAKgI,WAAWgD,aAExCrM,EAAK+K,kBAAkBa,YAAYhP,GAAS0E,IAAI,CAAEqI,KAAM,GAAGsC,QAC3DjM,EAAK+K,kBAAkB5I,KAAK,IAAIlF,KAASqD,SAAS1D,GAClDoD,EAAK+K,kBAAkB5I,KAAK1D,EAAauN,IAAUJ,YAAYhP,GAE3DwP,GACApM,EAAK+K,kBAAkBzJ,IAAI,CAAEqF,MAAO,GAAGtF,EAAKgI,WAAWgD,iBAG3DrM,EAAK2L,SAASxJ,KAAK,IAAItF,KAAWgC,MAAamN,OAAa1L,SAAS/C,EACzE,EAEA6N,cAAe,SAAS9I,GACpB,MAAMtC,EAAOxE,KACP8Q,EAAS7Q,EAAE6G,EAAEI,eACb6J,EAAWD,EAAOxE,SAAS4D,GAAG,MAC9Bc,EAASF,EAAO3N,KAAKI,GACrBoC,EAAcoL,EAAWD,EAAOxE,SAAWrM,EAAE6G,EAAEI,eAAe+J,QAAQ,IAAIxP,KAC1EoE,EAAOrB,EAAKmM,eAAehL,EAAYxC,KAAKE,IAC5C6N,EAAarL,EAAKgI,WAAWC,SAC7BqD,EAAa3M,EAAKmM,eAAe9K,EAAKuL,WAEtCC,GADoB7M,EAAKoI,eAAejG,KAAK,IAAIlF,KAAS4B,MAAa8N,EAAWjO,WAAWnC,KAAYsC,MAAa8N,EAAWjO,SACrH,CAAE2C,KAAMA,EAAMF,YAAaA,IAEzCuL,IACA/Q,EAAMqM,QAAQ7G,GACdA,EAAYiB,UAGhBf,EAAKgI,WAAWC,SAAWkD,IAAWnO,EACtC2B,EAAK8M,mBACL9M,EAAK+K,kBAAkBgC,YAAYnQ,EAAS4P,IAAWnO,GAExC,QAAXmO,GAKJxM,EAAKoD,QAAQ9E,EAAOuO,GACpB7M,EAAK+L,kBAAkB1K,EAAK3C,MALxBsB,EAAKoD,QAAQ/E,EAAKwO,EAM1B,EAEAxB,WAAY,SAAS/I,GACjB,MAAMtC,EAAOxE,KACP8Q,EAAS7Q,EAAE6G,EAAEI,eAEbvB,EADWmL,EAAOxE,SAAS4D,GAAG,MACLY,EAAOxE,SAAWrM,EAAE6G,EAAEI,eAAe+J,QAAQ,IAAIxP,KAC1EoE,EAAOrB,EAAKmM,eAAehL,EAAYxC,KAAKE,IAC5C8N,EAAa3M,EAAKmM,eAAe9K,EAAKuL,WAEtCxG,GADoBpG,EAAKoI,eAAejG,KAAK,IAAIlF,KAAS4B,MAAa8N,EAAWjO,WAAWnC,KAAYsC,MAAa8N,EAAWjO,SACrHiO,EAAWhM,MAAMqG,QAAQ3F,IACrCwL,EAAY,CAAExL,KAAMA,EAAMF,YAAaA,EAAa6L,MAAO1K,GAE7DtC,EAAKoD,QAAQlE,EAAO2N,IACpBvK,EAAEwJ,iBAGFzK,EAAKgI,YAAchI,EAAKgI,WAAWC,UACnCtJ,EAAK+K,kBAAkBzK,SAAS1D,GAGpC+P,EAAWhM,MAAMsM,OAAO7G,EAAW,GAE/BpG,EAAKkN,kBAAkBP,KACvBA,EAAW3D,SAAU,GAGzBhJ,EAAK8M,kBACT,EAEAI,kBAAmB,SAAS7L,GACxB,MACAyG,EADatM,KACC2Q,eAAe9K,EAAKuL,WAElC,OAAyB,GAArBvL,EAAKV,MAAMK,QACPK,EAAKyH,MAAQlL,GAA8B,GAAvBkK,EAAOnH,MAAMK,SACjC8G,EAAOnH,MAAMsM,OAAO,EAAE,GACtBnF,EAAOkB,SAAU,IAEd,GAGc,GAArB3H,EAAKV,MAAMK,QACXK,EAAKV,MAAM,GAAGmI,MAAQlL,IACrByD,EAAKV,MAAMwM,MAAKpK,GAAKA,EAAEiG,SAKhC,EAEAoE,aAAc,SAASjM,EAAaE,GAChC,MACMgM,EAAgBlM,EAAY2G,SAC5ByE,EAAWpL,EAAYuK,GAAG,IAAIpP,KAEpCX,EAAMqM,QAAQ7G,GACdoL,EAAWpL,EAAY+G,QAAU/G,EAAYiB,SALhC5G,KAMRgN,kBANQhN,KAORiN,YAAY8D,EAAWpL,EAAckM,EAAehM,EAC7D,EAEAiH,cAAe,SAASjH,GACpB,MAAMrB,EAAOxE,KACb6F,EAAK3C,IAAM2C,EAAK3C,KAAO/C,EAAMyE,OAC7BJ,EAAKsN,YAAYjM,GAEbA,EAAKyH,OAASnL,GAAU0D,EAAKd,cAC7Bc,EAAKd,YAAc7D,GAGvB2E,EAAKV,MAAM4M,SAASC,IAChBA,EAAUZ,UAAYvL,EAAK3C,IAn0BzB,WAq0BE8O,EAAU1E,OACN0E,EAAUnE,aAAe3N,IAAwC,IAAzB8R,EAAUnE,aAClDmE,EAAUnE,WAAa,CACnBC,UAAU,IAGlBkE,EAAU9O,IAAM8O,EAAU9O,KAAO/C,EAAMyE,QAGvCoN,EAAU7M,OAAS6M,EAAU7M,MAAMK,QACnChB,EAAKsI,cAAckF,EACvB,GAER,EAEAF,YAAa,SAASjM,GAClB,MAAMrB,EAAOxE,KAEb,GAAI6F,EAAKV,MACL,IAAK,IAAI8M,EAAI,EAAGA,EAAIpM,EAAKV,MAAMK,OAAQyM,IACnCpM,EAAKV,MAAM4M,SAAQG,IACf1N,EAAKsN,YAAYI,EAAQ,IAKrC1R,EAAOqF,EAAM,CACT2H,QAAS3H,EAAK2H,UAAYtN,EAAcsE,EAAK+I,aAAaC,QAAU3H,EAAK2H,QACzEC,UAAW5H,EAAK4H,YAAcvN,EAAcsE,EAAK+I,aAAaE,UAAY5H,EAAK4H,UAC/E1H,UAAWF,EAAKE,YAAc7F,EAAcsE,EAAK+I,aAAaxH,UAAYF,EAAKE,UAC/E7B,KAAM2B,EAAK3B,OAAShE,EAAcsE,EAAK+I,aAAarJ,KAAO2B,EAAK3B,MAExE,EAEA6K,YAAa,SAASlJ,GAGlBA,EAAK2H,SAAW3H,EAAK2H,QAFRxN,KAGRsR,kBACT,EAEArC,YAAa,SAASpJ,GAClB,MAAMrB,EAAOxE,KACPmR,EAAa3M,EAAKmM,eAAe9K,EAAKuL,WACtCxG,EAAYuG,EAAWhM,MAAMqG,QAAQ3F,GACjBrB,EAAKoI,eAAejG,KAAK,IAAItD,MAAawC,EAAK3C,SAASoJ,SAElF6E,EAAWhM,MAAMsM,OAAO7G,EAAW,GACnCpG,EAAK8M,kBACT,EAEAtE,gBAAiB,WACb,MAAMxI,EAAOxE,KACPmS,EAAgB3N,EAAK4N,iBACrBC,EAA0BpS,EAAE,eAAemB,QAAc0D,SAh5B7C,qCAw5BlB,GANKN,EAAK+K,oBACN/K,EAAK+K,kBAAoB8C,EACzBA,EAAwBpG,OAAO7I,GAC/BiP,EAAwBC,aAAa9N,EAAKoI,kBAGzCuF,EAAc3M,OAGf,OAFAhB,EAAK2L,UAAY3L,EAAK2L,SAASvJ,cAC/BpC,EAAK2L,SAAW,MAIf3L,EAAK2L,WACN3L,EAAK2L,SAAW3L,EAAKF,QAAQiO,QAAQ3R,GAAkB+F,KAAK,IAAIjG,MAGpE8D,EAAK2L,SAASzD,QAEd,IAAK,IAAIhH,EAAI,EAAGA,EAAIyM,EAAc3M,OAAQE,IAAK,CAC3C,MAAMG,EAAOsM,EAAczM,GACrBoL,EAAS7Q,EAAEE,EAAMqS,KAAKC,aAAa,CAAEC,SAAU,OAAQxO,KAAM,YAClDY,SAh7BR,oBAi7BQmH,OAp4BI,+BAo4BsBzH,EAAKmO,YAAY9M,aAE5DiL,EAAO3N,KAAKE,EAAUwC,EAAK3C,KAC3BsB,EAAK2L,SAASlE,OAAO6E,GAEjBpL,EAAIyM,EAAc3M,OAAS,GAC3BhB,EAAK2L,SAASlE,OAt7Bd,yDAw7BR,CACJ,EAEAO,QAAS,WACL,MAAMhI,EAAOxE,KAEbK,EAAOoE,GAAG+H,QAAQ9H,KAAKF,GAEvBA,EAAKF,QAAQmI,IAAIlM,GACjBiE,EAAKF,QAAQoI,QAEbvM,EAAMqM,QAAQhI,EAAKoO,QACvB,EAEAC,QAAS,WACL,MAAMrO,EAAOxE,KACbG,EAAMqM,QAAQhI,EAAK+K,mBACnB/K,EAAK+K,kBAAkB7C,QACvBlI,EAAK8M,kBACT,EAEAA,iBAAkB,WACd,MAAM9M,EAAOxE,KACP8S,EAAkBtO,EAAKF,QAAQqC,KAAK,IAAItD,MAAamB,EAAKD,QAAQwI,SAAS7J,SAEjFsB,EAAKoN,aAAakB,EAAiBtO,EAAKD,QAAQwI,SACpD,EAEAgG,iBAAkB,SAASlB,EAAehM,GACtC,MAAMrB,EAAOxE,KACPgT,EAAkB/S,EAAE,UAAUkD,KAAKE,EAAUwC,EAAK3C,KAClD+P,EAAkB,CACpBlO,YAAac,EAAKd,aAAe7D,EACjCiE,MAAO,IAGNU,EAAKV,MAAMwM,MAAKpK,GAAGA,EAAEiG,YAI1BqE,EAAc5F,OAAO+G,GAErBnN,EAAKV,MAAM4M,SAASC,IAChB,MAAMkB,EAAc,CAChBhQ,IAAK8O,EAAU9O,KAEbyC,EAAc1F,EAAE+C,GAAMoN,YAAYvP,GAEpCmR,EAAUnE,YAAcmE,EAAUnE,WAAWC,SAC7CtJ,EAAK2O,oBAAoBnB,IAIzBA,EAAU9N,OACVgP,EAAYhP,KAAO8N,EAAU9N,MAG7B8N,EAAUxE,SAAWtN,IACrBgT,EAAY1F,QAAUwE,EAAUxE,SAGhCwE,EAAUxE,UACVwF,EAAgB/G,OAAOtG,GACvBnB,EAAKyI,YAAYtH,EAAaqM,GAC9BiB,EAAgB9N,MAAMe,KAAKgN,IAC/B,IAGLrN,EAAKG,SAAW,IAAI5B,GAAa4O,EAAiBC,GAClDpN,EAAKG,SAAS+B,KAAKlE,GAAQW,EAAK4O,gBAAgBrL,KAAKvD,IACxD,EAEA4O,gBAAiB,SAAStM,GACtB,MAAMtC,EAAOxE,KACPyH,EAAWjD,EAAKmM,eAAe7J,EAAEW,SAASvE,KAChDwE,EAAYlD,EAAKmM,eAAe7J,EAAEY,UAAUxE,KAE5CuE,EAASvD,KAAO4C,EAAEW,SAASvD,KAC3BwD,EAAUxD,KAAO4C,EAAEY,UAAUxD,KAC7BM,EAAKoD,QAAQ/D,GAAQ,CAAEwP,GAAIvM,EAAGW,SAAUA,EAAUC,UAAWA,GACjE,EAEA4L,eAAgB,SAASzB,EAAehM,GACpC,MAAMrB,EAAOxE,KACPuT,EAAkBtT,EAAE,2BACpBuT,EAAevT,EAAE,SAIjBwT,EAAgB5N,EAAK6N,WAAaxT,IAAiE,GAAlD2F,EAAKV,MAAMqG,QAAQ3F,EAAKV,MAAMU,EAAK6N,YAAoB7N,EAAKV,MAAMU,EAAK6N,UAAU7F,WAAWC,SAAY,EAAIjI,EAAK6N,SAEnK7N,EAAKV,MAAMwM,MAAKpK,GAAGA,EAAEiG,YAI1B+F,EAAgBtH,OAAOuH,GACvB3B,EAAc5F,OAAOsH,GACrB1B,EAAc1O,KAAKE,EAAUwC,EAAK3C,KAClC2O,EAAc/M,SAAShE,GAEvB+E,EAAKV,MAAM4M,SAASC,IAChB,MAAM2B,EAAM1T,GAz+BN2T,EAy+BoBpP,EAAKmO,YAAYX,GAz+B5B,4BAA4B4B,kBAy+BazQ,KAAKE,EAAU2O,EAAU9O,KAz+B3E0Q,MA0+BN,MAAMC,EAAiB5T,EAAE,UAErB+R,EAAUnE,YAAcmE,EAAUnE,WAAWC,SAC7CtJ,EAAK2O,oBAAoBnB,GAIzBA,EAAUxE,UACVhJ,EAAKsP,YAAYH,EAAK3B,GACtBwB,EAAavH,OAAO0H,GACpBJ,EAAgBtH,OAAO4H,GACvBrP,EAAKyI,YAAY4G,EAAgB7B,GACrC,IAGJ/R,EAAEuT,EAAalO,WAAWmO,IAAe3O,SAAS9C,GAClDuR,EAAgBQ,cAhCQ,CACpBC,WAAW,IAgCnB,EAEAC,mBAAoB,SAASpC,EAAehM,GACxC,MAAMrB,EAAOxE,KACPkU,EAAkC,mBAAjBrO,EAAKqO,QAAyB/T,EAAMgU,SAAStO,EAAKqO,QAApB/T,CAA6B,CAAC,GAAK0F,EAAKqO,QACvF5P,EAAUrE,EAvgCU,yLAARmU,EAugCoB5T,EAAO,CAAC,EAAGqF,EAAM,CAAE+N,MAAOpP,EAAKmO,YAAY9M,GAAOqO,QAASA,KArgC/BN,6EACpBjS,0IAEYyS,EAAKF,iEAL7CE,MAwgClB,MAAMjD,EAAa3M,EAAKmM,eAAe9K,EAAKuL,WACtCiD,EAAcxO,EAAKgI,YAAchI,EAAKgI,WAAWC,UAGnDqD,GAAcA,EAAW7D,OAASlL,GAAQiS,GAK9CxC,EAAc/M,SA5jCF,iBA6jCEsL,YAAYvP,GACZsC,KAAKE,EAAUwC,EAAK3C,KAClCsB,EAAKsP,YAAYxP,EAAQqC,KAAK,IAAIhF,KAAkBkE,GACpDgM,EAAc5F,OAAO3H,IARjBuN,EAAc5F,OAAOiI,EAS7B,EAEAf,oBAAqB,SAAStN,GAC1B,MAAMrB,EAAOxE,KACP2F,EAAc1F,EAAE+C,GAAMoN,YAAYvP,GAEpC2D,EAAK+K,kBAAkB5I,KAAK1D,EAAa4C,EAAK3C,MAAMsC,SAIxDhB,EAAK+K,kBAAkBgD,QAAQ5M,GAC/BnB,EAAKyP,mBAAmBtO,EAAaE,GACzC,EAEAiO,YAAa,SAASQ,EAAkBzO,GACvB7F,KAER0N,QAAQqE,SAASf,IACdA,EAAOpD,UAAU/H,IACjByO,EAAiBrI,OAAOhM,EAAEE,EAAMqS,KAAKC,aAAa,CAAEC,SAAU,OAAQ/E,KAAMqD,EAAOrD,QAASxK,KAAKI,EAAayN,EAAO3D,MACzH,GAGR,EAEAJ,YAAa,SAAS4E,EAAehM,GAOjC,OAJIA,EAAKgJ,IACLgD,EAAc1O,KAAK,KAAM0C,EAAKgJ,IAHrB7O,KAMD,WA7+BWuU,EA6+BuB1O,EAAKyH,KA5+BhDiH,EAAOC,OAAO,GAAGC,cAAgBF,EAAOG,MAAM,GA4+BU,SAAQ7C,EAAehM,GA7+B1F,IAA+B0O,CA8+B3B,EAEAnC,eAAgB,SAASjN,GACrB,MAAMX,EAAOxE,KACPuE,EAAUC,EAAKD,QACrB,IAAIoQ,EAAS,GAgBb,OAdKxP,IACDA,EAAQZ,EAAQwI,SAAS5H,OAG7BA,EAAM4M,SAASlM,IACPA,EAAKgI,YAAchI,EAAKgI,WAAWC,UACnC6G,EAAOzO,KAAKL,GAGZA,EAAKV,OAASU,EAAKV,MAAMK,SACzBmP,EAASA,EAAOC,OAAOpQ,EAAK4N,eAAevM,EAAKV,QACpD,IAGGwP,CACX,EAEAhC,YAAa,SAAS9M,GAClB,MACMsL,EADOnR,KACW2Q,eAAe9K,EAAKuL,WACtCL,EAAWI,GAAkC,QAApBA,EAAW7D,KAC1C,IAAIuH,EAAShP,EAAKgP,OAMlB,OAJI9D,GAAYlL,EAAKiP,YACjBD,EAAShP,EAAKiP,WAGbD,EAIE1U,EAAMgU,SAASU,EAAf1U,CAAuB0F,GAHnBA,EAAK+N,OAAS,EAI7B,EAEAjD,eAAgB,SAASzN,EAAKoJ,GAC1B,MAAM9H,EAAOxE,KACb,IAAI+U,EAIJ,OAFAzI,EAASA,GAAU9H,EAAKD,QAAQwI,UAErB7J,MAAQA,EACRoJ,GAGXA,EAAOnH,MAAM4M,SAASlM,IAClB,GAAIA,EAAK3C,MAAQA,GAKjB,GAAI2C,EAAKV,OAASU,EAAKV,MAAMK,OAAQ,CACjC,MAAMmP,EAASnQ,EAAKmM,eAAezN,EAAK2C,GAExC,GAAI8O,EAEA,YADAI,EAAQJ,EAGhB,OAXII,EAAQlP,CAWZ,IAEGkP,EACX,EAEAjG,aAAc,SAASjJ,EAAMmP,EAAM7K,GAC/B,MAAM3F,EAAOxE,KACb,IAAI+U,EAEJ,OAAIlP,EAAKmP,IAAS7K,EACPtE,GAGPA,EAAKV,OACLU,EAAKV,MAAM4M,SAASC,IAChB,IAAI2C,EAASnQ,EAAKsK,aAAakD,EAAWgD,EAAM7K,GAC5CwK,IACAI,EAAQJ,EACZ,IAGDI,EACX,EAEA5H,eAAgB,SAAS8H,GACrB,MAAMzQ,EAAOxE,KAEbwE,EAAK0Q,mBAAqB,IAAI/U,EAAMG,GAAG6U,UAAU3Q,EAAKF,QAAS,CAC3D8Q,YAAY,EACZ5M,OAAQ,kDACR6M,KAAM,SAAS/Q,GACX,MAAMyM,EAAWzM,EAAQ4L,GAAG,MACtBvK,EAAcrB,EAAQ2M,QAAQ,IAAIxP,KAClCoE,EAAOrB,EAAKmM,gBAAgBI,EAAWzM,EAAUqB,GAAaxC,KAAKE,IACnEiS,EAAcvE,EAAWvM,EAAK+Q,kBAAkBjR,GAAWqB,EAAYgB,KAAK,IAAIhF,KAAiB6Q,OAEvG,MA7oCG3M,IAAQ,iHACkCA,EAAK+N,sDA4oC3C4B,CAAa,CAChBrK,MAAOxF,EAAYwF,QACnBC,OAAQzF,EAAYyF,SACpB8I,QAASrO,EAAKqO,QACdN,MAAOpP,EAAKmO,YAAY9M,GACxB6H,QAAS4H,GAEjB,EACAG,UAAWjR,EAAKkR,WAAW3N,KAAKvD,GAChCmR,QAASnR,EAAKoR,SAAS7N,KAAKvD,GAC5BqR,KAAMrR,EAAKsR,MAAM/N,KAAKvD,IAE9B,EAEAkR,WAAY,SAAS5O,GACjB,MAAMtC,EAAOxE,KACP+V,EAAS9V,EAAE6G,EAAEI,eACbrB,EAAOkQ,EAAO9E,QAAQ,IAAIxP,KAEhC+C,EAAKwR,YAAc,CACf7K,MAAOtF,EAAKsF,QACZC,OAAQvF,EAAKuF,SACbvF,OACAkQ,UAGJvR,EAAKyR,2BAELzR,EAAKoD,QAAQ7D,GAAW,CAAE8B,KAAMrB,EAAKwR,YAAYnQ,KAAMqQ,eAAgBpP,GAC3E,EAEA8O,SAAU,SAAS9O,GACf,MAAMtC,EAAOxE,KACPmW,EAAmB3R,EAAKF,QAAQqC,KAAK,IAAI/E,WACzCyP,EAAY,CAAExL,KAAMrB,EAAKwR,YAAYnQ,KAAMqQ,eAAgBpP,GAE7DqP,EAAiB3Q,SACjBhB,EAAK0Q,mBAAmBG,KAAKe,OAC7B5R,EAAK6R,cAAcF,IAGvB3R,EAAKF,QAAQqC,KAAK,IAAI/E,KAAmBgF,SACzCpC,EAAKF,QAAQqC,KAAK,IAAI7E,KAAiB8E,SAElCuP,EAAiB3Q,QAClBhB,EAAK8R,mBAET9R,EAAKoD,QAAQ5D,GAASqN,GACtB7M,EAAK+R,YAAc,KACnB/R,EAAKwR,YAAc,IACvB,EAEAF,MAAO,SAAShP,GACZ,MAAMtC,EAAOxE,KACPwW,EAAcvW,EAAE6G,EAAE2P,oBAAoBxF,QAAQ,IAAIxP,KAAS4B,MAC3DwC,EAAOrB,EAAKmM,eAAe6F,EAAYrT,KAAKE,IAC5CqT,EAAYzW,EAAEwD,GACdkT,EAAiBH,EAAYrT,KAAKE,GAClCuT,EAAcpS,EAAK+R,aAAe/R,EAAK+R,YAAYpT,KAAKE,GAC9D,IAAIgO,EAAY,CAAExL,KAAMrB,EAAKwR,YAAYnQ,KAAMqQ,eAAgBpP,GAE3DtC,EAAKoD,QAAQ9D,GAAMuN,GACnBvK,EAAEwJ,iBAIFqG,IAAmBC,IAIvBpS,EAAK+R,YAAcC,EACnBhS,EAAKF,QAAQqC,KAAK,IAAI9E,KAAmB+E,SACzC8P,EAAU5Q,IAAI,CACV+Q,SAAU,WACV3I,IAAK,MACLC,KAAM,MACNC,UAAW,uBACX,UAAW,SAGXvI,GAAQA,EAAKiR,WAAajR,EAAKiR,SAASC,WACxCL,EAAU5Q,IAAI,UAAW,QAG7B0Q,EAAYvK,OAAOyK,GACvB,EAEAJ,iBAAkB,WACd,MAAM9R,EAAOxE,KAGb,GAFiBwE,EAAKwR,YAAYnQ,KAAKqK,GAAG,IAAIpP,KAG1C,OAAO0D,EAAKwS,WAGhBxS,EAAKyS,UAAUzS,EAAKwR,YAAYnQ,KACpC,EAEAmR,SAAU,SAASrD,GACf,GAAIA,IAAQzT,EACR,OAGJ,MACMgX,EAAWvD,EAAI1C,QAAQ,IAAIhP,KAAamS,KAAK,iBAEnDT,EAAIwD,OACJD,EAASE,YAAYzD,EACzB,EAEAsD,UAAW,SAAStR,GAChB,MACM0R,EAAW1R,EAAY2R,SAAS,IAAItW,YAC1C2E,EAAYwR,OACZE,EAASF,MACb,EAEAI,iBAAkB,SAASC,GACvB,MAAMhT,EAAOxE,KAGb,GAFiBwX,EAAetH,GAAG,MAG/B,OAAO1L,EAAKiT,SAASD,GAGzBhT,EAAKkT,UAAUF,EACnB,EAEAE,UAAW,SAASF,GAChB,MACM7R,EAAc6R,EAAevG,QAAQ,IAAIxP,KACzCkW,EAAchS,EAAYiS,OAC1BC,EAAclS,EAAYmS,OAIhC,GAFAnS,EAAYyQ,OAERuB,EAAYzH,GAAG,IAAIlP,KACnB,OAAO2W,EAAYvB,OAGvByB,EAAYzB,MAChB,EAEAqB,SAAU,SAAS9D,GACf,MACMoE,EAAWpE,EAAIzD,GAAG,IAAIlO,KACtBkV,EAAWvD,EAAI1C,QAAQ,IAAIhP,KAAamS,KAAK,iBAEnDT,EAAIyC,OAEA2B,GACAb,EAASE,YAAY,mBAE7B,EAEA7B,kBAAmB,SAAS5P,GACxB,MAAMqS,EAAUrS,EAAYgB,KAAK,UAC3BsR,EAAYhY,EAAE,UAIpB,OAFA+X,EAAQE,MAAK,CAACC,EAAGrH,IAAWmH,EAAUhM,OAAOhM,EAAE6Q,GAAQsH,WAEhDH,EAAUzF,MACrB,EAEAyD,yBAA0B,WACtB,MAAMzR,EAAOxE,KAEbwE,EAAKyJ,WAAW8D,SAASsG,IACrB,MAAM/T,EAAUrE,EAAEuD,GAEK,WAAnB6U,EAAUhL,OAId7I,EAAKF,QAAQ2H,OAAO3H,GACpBA,EAAQwB,IAAI,CACR+Q,SAAU,WACV,UAAW,SACX3I,IAAKmK,EAAUnK,IACfC,KAAMkK,EAAUlK,KAChBC,UAAW,GAAGiK,EAAUjK,oBAAoBiK,EAAU9J,YAE1DjK,EAAQnB,KAAKG,EAAgB+U,EAAUhL,MAAK,GAEpD,EAEAyC,oBAAqB,SAAShJ,GAC1B,MAAMtC,EAAOxE,KACPqY,EAAYpY,EAAE6G,EAAEI,eAChBoR,GAAqBD,EAAU/L,SAAS4D,GAAG,IAAIrO,KAC/C0W,EAAgBF,EAAUlV,KAAKG,GAC/BkV,EAAeH,EAAUlV,KAAKE,GAC9BoV,EAAgBjU,EAAKyJ,WAAWzF,QAAO9C,GAAKA,EAAE2H,OAASkL,IAAe,GACtEG,EAAiBzY,EAAE,eAAe6B,QAClCmW,EAAYK,EAAoB9T,EAAKoI,eAAiBpI,EAAK+R,YAC3D9F,EAAejM,EAAK2L,SAAW3L,EAAK2L,SAASO,aAAe,EAC5DlB,EAAiByI,EAAUvH,aAC3BiI,EAAkBV,EAAUW,cAC5BC,EAAkBL,GAAgBP,EAAUtR,KAAK,IAAI7E,KAAiBuB,MAAamV,OACnFtV,EAAM/C,EAAMyE,OAClB,IAAIuG,EAAQ3G,EAAKwR,YAAY7K,MACzBC,EAAS5G,EAAKwR,YAAY5K,OAE9B,GAAIyN,GAAmBA,EAAgBrT,OACnC,OAAOqT,EAAgB1B,OAGvBoB,IAAkB5V,IAClBwI,EAAQqE,EACRpE,EAASuN,GAGTJ,IAAkBhW,GAAOgW,IAAkB/V,IACvC4I,EAASuN,EAAkB,IAC3BvN,EAASuN,EAAkB,GAG/BxN,EAAQqE,GAGR+I,IAAkB9V,GAAQ8V,IAAkB7V,IACxCyI,EAAQqE,EAAiB,IACzBrE,EAAQqE,EAAiB,GAG7BpE,EAASuN,GAGb,MAAM7S,EAAM,CACR+Q,SAAU,WACV,UAAW,IACX3I,IAAKuK,EAAcpK,WAAWsK,EAAiBvN,GAC/C+C,KAAMsK,EAAcnK,YAAYkB,EAAgBrE,IAAUmN,EAAoB7H,EAAe,GAC7FtF,MAAOA,EACPC,UAGJsN,EAAe5S,IAAIA,GACnB4S,EAAevV,KAAKG,EAAgBmV,EAAcpL,MACnClK,KAAKE,EAAUH,GAC9BmV,EAAUlV,KAAKE,EAAUH,GACzB+U,EAAUhM,OAAOyM,GACjBlU,EAAKwR,YAAY8C,QAAU,CACvB3N,QACAC,UAEJ5G,EAAKwR,YAAYiC,UAAY,CACzB9M,MAAOqE,EACPpE,OAAQuN,EAEhB,EAEA5I,iBAAkB,WACD/P,KAERsE,QAAQqC,KAAK,IAAI7E,KAAiBsU,MAC3C,EAEAC,cAAe,SAASgC,GACpB,MAAM7T,EAAOxE,KACP+Q,EAAWvM,EAAKwR,YAAYD,OAAO7F,GAAG,MACtCoI,GAAqBD,EAAU/L,SAAS4D,GAAG,IAAIrO,KAC/C8D,EAAcoL,EAAWvM,EAAKwR,YAAYD,OAASvR,EAAKwR,YAAYnQ,KACpE0Q,EAAc/R,EAAKmM,eAAenM,EAAK+R,YAAYpT,KAAKE,IACxD2S,EAAcxR,EAAKmM,eAAehL,EAAYxC,KAAKE,IACnD0V,EAAWV,EAAUlV,KAAKG,GAC1B0V,EAAoBxU,EAAKmM,eAAeqF,EAAY5E,WACpD6H,EAAmBD,EAAkB7T,MAAMqG,QAAQwK,GACnDlD,EAAkBtO,EAAKF,QAAQqC,KAAK,IAAItD,MAAamB,EAAKD,QAAQwI,SAAS7J,SAEjF8V,EAAkB7T,MAAMsM,OAAOwH,EAAkB,GACjDF,GAAYpW,EAAS6B,EAAK0U,SAAS3C,EAAaP,GAAexR,EAAK2U,WAAW5C,EAAaP,EAAa+C,EAAUT,GACnH9T,EAAKsI,cAActI,EAAKD,QAAQwI,UAChCvI,EAAK4U,oBAAoBpD,EAAa+C,EAAUT,GAChD9T,EAAKoN,aAAakB,EAAiBtO,EAAKD,QAAQwI,UAChDgM,GAAYpW,EACR6B,EAAKoD,QAAQhE,EAAY,CAAEiC,KAAMmQ,EAAarQ,YAAaA,IAC3DnB,EAAKoD,QAAQjE,EAAM,CAAEkC,KAAMmQ,EAAarQ,YAAaA,GAC7D,EAEAwT,WAAY,SAASE,EAAYxT,EAAMkT,EAAUO,GAC7C,MAAM9U,EAAOxE,KACPuZ,EAAmBD,EAAe9U,EAAKD,QAAQwI,SAAWvI,EAAKmM,eAAe0I,EAAWjI,WACzFoI,EAAkBD,EAAiBpU,MAAMqG,QAAQ6N,GACjDrI,EAAS+H,IAAaxW,GAAOwW,IAAatW,EAAOM,EA37CpD,OA47CG6H,EAAY4O,GAAmBxI,IAAWjO,EAAU,EAAI,GAExD0W,EAAYV,IAAaxW,GAAOwW,IAAavW,EAASH,EAASC,EAC/DoX,EAAgB,CAClBpM,KAAMnL,EACN4C,YAJgBgU,IAAaxW,GAAOwW,IAAavW,EAASrB,EAAWD,EAKrEiE,MAAO,IAGLjB,EAAO,GADOM,EAAKwR,YAAY8C,QAAQW,OAK7C,OAFA5T,EAAK3B,KAAOA,EAERoV,GACAI,EAAcvU,MAAMe,KAAKqT,GACxBR,IAAaxW,GAAOwW,IAAatW,EAAQiX,EAAcvU,MAAMwU,QAAQ9T,GAAQ6T,EAAcvU,MAAMe,KAAKL,QACvGrB,EAAKD,QAAQwI,SAAW2M,KAItBX,IAAaxW,GAAOwW,IAAavW,IAAW+W,EAAiBxU,cAAgB5D,IAC7E4X,IAAatW,GAAQsW,IAAarW,IAAU6W,EAAiBxU,cAAgB7D,EACxEqY,EAAiBpU,MAAMsM,OAAO7G,EAAW,EAAG/E,IAGnDwT,IACAK,EAAcxV,KAAOmV,EAAWnV,KAChCmV,EAAWnV,KAAO,MAGtBqV,EAAiBpU,MAAMsM,OAAO+H,EAAiB,GAC/CE,EAAcvU,MAAMe,KAAKmT,GACzBK,EAAcvU,MAAM6L,GAAQnL,QAC5B0T,EAAiBpU,MAAMsM,OAAO+H,EAAiB,EAAGE,GACtD,EAEAR,SAAU,SAAcG,EAAYxT,GAChC,MACM0T,EADOvZ,KACiB2Q,eAAe0I,EAAWjI,WAClDoI,EAAkBD,EAAiBpU,MAAMqG,QAAQ6N,GACjDK,EAAgB,CAClBpM,KAAMlL,EACN+C,MAAO,CACHkU,EACAxT,IAIJwT,EAAW/L,OAASlL,GAKxBmX,EAAiBpU,MAAMsM,OAAO+H,EAAiB,GAC/CD,EAAiBpU,MAAMsM,OAAO+H,EAAiB,EAAGE,IAL9CL,EAAWlU,MAAMe,KAAKL,EAO9B,EAEAuT,oBAAqB,SAASvT,EAAMkT,EAAUO,GAC1C,MAAM9U,EAAOxE,KACPsX,EAAW9S,EAAKoV,aAAa/T,GAC7B4T,EAAYV,IAAaxW,GAAOwW,IAAavW,EAASH,EAASC,EAC/DuX,EAAarV,EAAKwR,YAAYiC,UAAUwB,GACxCK,EAAkBtV,EAAKwR,YAAYyD,GACnCM,EAAgBF,EAAaC,EAC7BE,EAAc,GACpB,IAAIC,EAAYF,EAEZhB,IAAapW,IAIO,IAApB2U,EAAS9R,QAKb8R,EAASvF,SAASC,IACVA,EAAU9O,MAAQ2C,EAAK3C,MAItB8O,EAAU9N,MAKf8N,EAAU9N,KAAOM,EAAK0V,kBAAkBL,EAAYE,EAAe/H,EAAU9N,MAC7E+V,GAAajI,EAAU9N,MALnB8V,EAAY9T,KAAK8L,GAKM,IAG/BgI,EAAYjI,SAASoI,IACjB,MAAM9P,EAAU4P,EAAYD,EAAYxU,OAExC2U,EAAWjW,KAAOmG,CAAO,KArBzBiN,EAAS,GAAGpT,KAAO,KAwB3B,EAEAgW,kBAAmB,SAASL,EAAYE,EAAetQ,GACnD,MAAM2Q,EAAaL,EAAgBF,EACnC,IACIQ,EADAC,EAAO,KASX,OANIrW,GAAiBwF,KACjB6Q,EAAO,KAGXD,GAAc5Q,EAAS8Q,QAAQD,EAAM,IAE9B,GAAGD,EAAaD,IAAaE,GACxC,EAEAV,aAAc,SAAS/T,GAInB,OAHa7F,KACO2Q,eAAe9K,EAAKuL,WAE1BjM,MAAMqD,QAAOgS,IAAmB,IAAdA,EAAEhN,SACFgN,EAAEtX,MAAQ2C,EAAK3C,KACdsX,EAAE3M,aAAwC,IAA1B2M,EAAE3M,WAAWC,UAClE,IAGJxN,EAAGma,OAAO9N,GACb,CA9mDD,CA8mDGvM,OAAOD,MAAMua,QACFva,KAIjB","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.splitter.js'), require('kendo.tabstrip.js'), require('kendo.window.js'), require('kendo.html.button.js'), require('kendo.resizable.js'), require('kendo.draganddrop.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.splitter', 'kendo.tabstrip', 'kendo.window', 'kendo.html.button', 'kendo.resizable', 'kendo.draganddrop'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodockmanager = global.kendodockmanager || {}, global.kendodockmanager.js = factory()));\n})(this, (function () {\n const __meta__ = {\n id: \"dockManager\",\n name: \"DockManager\",\n category: \"web\",\n description: \"The DockManager widget represents a layout component that allows users to achieve custom layouts by docking panes.\",\n depends: [\"core\", \"splitter\", \"tabstrip\", \"window\", \"html.button\"]\n };\n\n (function($, undefined$1) {\n const kendo = window.kendo,\n Widget = kendo.ui.Widget,\n NS = \".kendoDockManager\",\n ui = kendo.ui,\n extend = $.extend,\n pxUnitsRegex = /^\\d+(\\.\\d+)?px$/i,\n percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i,\n isPlainObject = $.isPlainObject,\n DOCK_MANAGER = \"k-dock-manager\",\n DOCK_MANAGER_TOOLBAR = \"k-dock-manager-toolbar\",\n TOOLBAR_TEMPLATE = `
`,\n TOOLBAR_BUTTON = \"k-toolbar-button\",\n SEPARATOR = `
`,\n KSTATIC_PANE = \"k-pane-static\",\n KKPINNED_PANE = \"k-pane-pinned\",\n KPANE_TABBED = \"k-pane-tabbed\",\n SPLITTER = \"k-splitter\",\n KSPLITBAR = \"k-splitbar\",\n SPLITTER_FLEX = \"k-splitter-flex\",\n DOCK_SPLITTER = \"k-dock-manager-splitter\",\n KUNPINNED_CONTAINER = \"k-dock-manager-unpinned-container\",\n PANE_SIZING_PROP = \"flex-basis\",\n HORIZONTAL = \"horizontal\",\n VERTICAL = \"vertical\",\n KHIDDEN = \"k-hidden\",\n KBUTTON = \"k-button\",\n MAX_NUMBER_VALUE = Number.MAX_SAFE_INTEGER,\n KPANE = \"k-pane\",\n KPANE_FLEX = \"k-pane-flex\",\n KPANES_CONTAINER = \"k-dock-manager-pane-container\",\n KPANE_SCROLLABLE = \"k-pane-scrollable\",\n KPANE_ACTIONS = \"k-pane-actions\",\n KDOCK_INDICATOR = \"k-dock-indicator\",\n KDOCK_NAVIGATOR = \"k-dock-navigator\",\n KDOCK_PREVIEW = \"k-docking-preview\",\n KSELECTED = \"k-selected\",\n KACTIVE = \"k-active\",\n KTABSTRIP = \"k-tabstrip\",\n KSPLITBAR_DRAGGABLE = \"k-splitbar-draggable\",\n SPLIT = \"split\",\n TAB = \"tab\",\n CONTENT = \"content\",\n HEIGHT = \"height\",\n WIDTH = \"width\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n LEFT = \"left\",\n RIGHT = \"right\",\n MIDDLE = \"middle\",\n CLICK = \"click\",\n PIN = \"pin\",\n UNPIN = \"unpin\",\n UNSHIFT = \"unshift\",\n PUSH = \"push\",\n PANE = `
`,\n paneSelector = uid => `.${KPANE}[${kendo.attr(\"uid\")}=\"${uid}\"]`,\n buttonTextTemplate = text => `${text}`,\n contentPaneTemplate = data => `
\n
\n ${data.title}\n
\n
\n
${data.content}
\n
`,\n tabTemplate = title => `
  • ${title}
  • `,\n unpinnedResizeSplitbar = `
    \n
    \n
    `,\n UID_ATTR = kendo.attr(\"uid\"),\n INDICATOR_ATTR = kendo.attr(\"indicator\"),\n ACTION_ATTR = kendo.attr(\"action\"),\n hintTemplate = pane => `
    \n
    ${pane.title}
    \n
    `,\n INDICATOR_TEMPLATE = `
    \n \n \n \n \n \n
    `,\n NAVIGATOR_TEMPLATE = `
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    `,\n SPLITBAR = (splitter) => $(`
    \n
    \n
    `),\n CLOSE = \"close\",\n DOCK = \"dock\",\n INNER_DOCK = \"innerDock\",\n RESIZE = \"resize\",\n DRAG = \"drag\",\n DRAGSTART = \"dragStart\",\n DRAGEND = \"dragEnd\",\n CHANGE = \"change\";\n\n function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n function isPercentageSize(size) {\n return percentageUnitsRegex.test(size);\n }\n\n function isPixelSize(size) {\n return pxUnitsRegex.test(size) || /^\\d+$/.test(size);\n }\n\n function isFluid(size) {\n return !isPercentageSize(size) && !isPixelSize(size);\n }\n\n function calculateSize(size, total) {\n let output = parseInt(size, 10);\n\n if (isPercentageSize(size)) {\n output = Math.floor(output * total / 100);\n }\n\n return output;\n }\n\n function toPercentages(value) {\n return `${value}%`;\n }\n\n function toPixel(value ) {\n return kendo.parseFloat(value) + \"px\";\n }\n\n function percentage(partialValue, totalValue) {\n return (100 * partialValue) / totalValue;\n }\n\n function clamp(value, min, max) {\n return Math.min(max, Math.max(min, value));\n }\n\n const DockSplitter = Widget.extend({\n init: function(element, options) {\n const that = this;\n\n Widget.fn.init.call(that, element, options);\n options = $.extend(true, {}, options);\n that._marker = kendo.guid().substring(0, 8);\n that.element.addClass(`${SPLITTER} ${SPLITTER_FLEX} ${SPLITTER}-${options.orientation} ${DOCK_SPLITTER}`);\n that._initPanes();\n that._initResizable();\n kendo.notify(that);\n },\n\n options: {\n orientation: \"horizontal\",\n panes: []\n },\n\n events: [\n RESIZE\n ],\n\n _initPanes: function() {\n const that = this;\n const paneElements = that.element.children();\n const panesCount = paneElements.length;\n const orientation = that.options.orientation;\n const markerAttribute = kendo.attr(\"marker\");\n const sizedPanes = [];\n\n for (let i = 0; i < panesCount; i++) {\n const paneElement = paneElements.eq(i);\n let pane = that.options.panes[i];\n\n if (!pane) {\n pane = that.options.panes[i] = {};\n }\n\n pane.size = pane.size || \"auto\";\n paneElement.attr(kendo.attr(\"uid\"), pane.uid)\n .attr(\"role\", \"group\")\n .css(\"flex-basis\", pane.size)\n .addClass();\n\n if (pane.collapsed) {\n pane.css(\"display\", \"none\");\n }\n\n if (i < panesCount - 1 && !that.options.panes[i + 1].collapsed) {\n let splitbar = SPLITBAR(that);\n\n splitbar.insertAfter(paneElement);\n }\n\n if (pane.size) {\n sizedPanes.push(paneElement);\n }\n }\n\n if (sizedPanes.length === 1 && panesCount > 1) {\n sizedPanes.pop().addClass(KSTATIC_PANE);\n }\n },\n\n _initResizable: function() {\n const that = this;\n const orientation = that.options.orientation;\n const markerAttribute = kendo.attr(\"marker\");\n\n that._resizable = new kendo.ui.Resizable(that.element, {\n orientation: orientation,\n handle: `[${markerAttribute}=${that._marker}].${KSPLITBAR_DRAGGABLE}-${orientation} `,\n clickMoveClick: that.options.clickMoveClick,\n invalidClass: \"k-restricted-size-\" + orientation,\n resizeend: function() {\n that.element.find(\".k-splitter-overlay\").remove();\n },\n resize: function(e) {\n const axis = orientation === HORIZONTAL ? 'x' : 'y';\n let delta;\n const splitterBarIndex = that._getElementIndex(e.currentTarget, `.${KSPLITBAR}`);\n const splitterBar = e.currentTarget;\n\n if (orientation === HORIZONTAL) {\n const rtlModifier = kendo.support.isRtl(that.element) ? -1 : 1;\n delta = e.x.delta * rtlModifier;\n } else {\n delta = e.y.delta;\n }\n\n const { leftPane, rightPane } = that._dragSplitterBar(splitterBar, splitterBarIndex, delta);\n that.trigger(RESIZE, { leftPane: leftPane, rightPane: rightPane });\n },\n start: that._onResizeStart.bind(that)\n });\n\n },\n\n _dragSplitterBar: function(splitterBar, splitterBarIndex, delta) {\n const that = this;\n const { leftPane, rightPane } = that._getAdjacentPanes(splitterBar, splitterBarIndex);\n\n const leftPaneNewSize = leftPane.computedSize + delta;\n const isLeftPaneSizeInBounds = leftPaneNewSize > leftPane.min && leftPaneNewSize < leftPane.max;\n\n const panesWithoutSize = that._getPaneElements().filter(x => !x.style[PANE_SIZING_PROP]);\n const canResizeBothPanes = (leftPane.size || rightPane.size) && panesWithoutSize.length > 1;\n\n if ((leftPane.size && rightPane.size) || canResizeBothPanes) {\n if (isLeftPaneSizeInBounds) {\n that._resizePane(leftPane, delta);\n that._resizePane(rightPane, -delta);\n }\n } else if (rightPane.size) {\n that._resizePane(rightPane, -delta);\n } else {\n that._resizePane(leftPane, delta);\n }\n return { leftPane, rightPane };\n },\n\n _getAdjacentPanes: function(splitterBar, splitterBarIndex) {\n const that = this;\n const leftPaneIndex = splitterBarIndex;\n const rightPaneIndex = splitterBarIndex + 1;\n\n const leftPaneELement = that._getPaneElement(leftPaneIndex);\n const rightPaneELement = that._getPaneElement(rightPaneIndex);\n\n const leftPane = that._getPane(leftPaneIndex);\n const rightPane = that._getPane(rightPaneIndex);\n\n const leftPaneSize = that._getPaneOffsetSize(leftPaneIndex);\n const rightPaneSize = that._getPaneOffsetSize(rightPaneIndex);\n\n const totalPaneSize = leftPaneSize + rightPaneSize;\n const splitterSize = that._getElementClientSize(that.element, that.options.orientation);\n const getPixelSize = paneSize => that._calculatePixelSize(paneSize, splitterSize);\n\n const { leftPaneMaxSize, rightPaneMaxSize } = that._getAdjacentPanesMaxSize(leftPaneIndex, rightPaneIndex);\n const rightMaxPixelSize = getPixelSize(rightPane && rightPane.max);\n const leftMaxPixelSize = getPixelSize(leftPane && leftPane.max);\n\n return {\n leftPane: {\n index: leftPaneIndex,\n computedSize: leftPaneSize,\n min: getPixelSize(leftPane && leftPane.min) || ( rightMaxPixelSize ? totalPaneSize - rightMaxPixelSize : 0 ) || 0,\n max: leftPaneMaxSize,\n size: leftPaneELement.style[PANE_SIZING_PROP],\n collapsible: leftPane && leftPane.collapsible,\n uid: leftPane.uid\n },\n rightPane: {\n index: rightPaneIndex,\n computedSize: rightPaneSize,\n min: getPixelSize(rightPane && rightPane.min) || (leftMaxPixelSize ? totalPaneSize - leftMaxPixelSize : 0) || 0,\n max: rightPaneMaxSize,\n size: rightPaneELement.style[PANE_SIZING_PROP],\n collapsible: rightPane && rightPane.collapsible,\n uid: rightPane.uid\n }\n };\n },\n\n _resizePane: function(pane, delta) {\n const that = this;\n const constrainedSize = clamp(pane.computedSize + delta, pane.min, pane.max);\n let newSize = \"\";\n\n if (isPercentageSize(pane.size)) {\n const splitterSize = that._getElementClientSize(that.element, that.options.orientation);\n newSize = toPercentages(100 * constrainedSize / splitterSize);\n } else {\n newSize = toPixel(constrainedSize);\n }\n pane.size = newSize;\n that._setPaneSize(pane.index, newSize);\n },\n\n _allExpandedPanesHaveSize: function() {\n const that = this;\n const expandedPanes = that.options.panes.filter(x=> !x.collapsed);\n\n if (expandedPanes.length) {\n return expandedPanes.filter(x=> x.size).length;\n }\n\n return false;\n },\n\n _setPaneSize: function(paneIndex, size) {\n const that = this;\n const paneElement = that._getPaneElement(paneIndex);\n\n if (!paneElement) {\n return;\n }\n\n if (!that._allExpandedPanesHaveSize()) {\n $(paneElement).addClass(KSTATIC_PANE);\n }\n\n paneElement.style[PANE_SIZING_PROP] = size;\n },\n\n _getPaneSizes: function(paneIndex) {\n const that = this;\n const splitterSize = that._getElementClientSize(that.element, that.options.orientation);\n const pane = that._getPane(paneIndex);\n const paneSize = that._getPaneOffsetSize(paneIndex);\n const paneMinSize = pane && pane.min ? that._calculatePixelSize(pane.min, splitterSize) : 0;\n const paneMaxSize = pane && pane.max ? that._calculatePixelSize(pane.max, splitterSize) : MAX_NUMBER_VALUE;\n\n return {\n size: paneSize,\n min: paneMinSize,\n max: paneMaxSize\n };\n },\n\n _calculatePixelSize: function(size, containerSize) {\n let numericSize = kendo.parseFloat(size);\n\n if (isPercentageSize(size)) {\n numericSize = (containerSize * numericSize / 100);\n }\n\n return numericSize;\n },\n\n _getPaneOffsetSize: function(paneIndex) {\n const that = this;\n const paneElement = that._getPaneElement(paneIndex);\n const size = that._getElementOffsetSize(paneElement, that.options.orientation);\n return size;\n },\n\n\n _getElementOffsetSize: function(element, orientation) {\n if (!element) {\n return 0;\n }\n\n const rect = element.getBoundingClientRect();\n\n if (orientation === HORIZONTAL) {\n return rect.width;\n } else {\n return rect.height;\n }\n },\n\n _getElementClientSize: function(element, orientation) {\n const that = this;\n\n return that._getElementSize(element, orientation, \"client\");\n },\n\n _getElementSize: function(element, orientation, sizeType) {\n if (!element) {\n return 0;\n }\n\n element = element[0];\n\n if (orientation === HORIZONTAL) {\n return element[`${sizeType}Width`];\n } else {\n return element[`${sizeType}Height`];\n }\n },\n\n _getPane: function(paneIndex) {\n const that = this;\n\n return (that.options.panes || [])[paneIndex];\n },\n\n _getPaneIndex: function(pane) {\n const that = this;\n\n return that.options.panes.indexOf(pane);\n },\n\n _getAdjacentPanesMaxSize: function(leftPaneIndex, rightPaneIndex) {\n const that = this;\n const {\n size: leftPaneSize,\n min: leftPaneMinSize,\n max: leftPaneMaxPixelSize\n } = that._getPaneSizes(leftPaneIndex);\n\n const {\n size: rightPaneSize,\n min: rightPaneMinSize,\n max: rightPaneMaxPixelSize\n } = that._getPaneSizes(rightPaneIndex);\n\n const totalPaneSize = leftPaneSize + rightPaneSize;\n\n const leftPaneMaxSize = Math.min(leftPaneMaxPixelSize, totalPaneSize - rightPaneMinSize);\n const rightPaneMaxSize = Math.min(rightPaneMaxPixelSize, totalPaneSize - leftPaneMinSize);\n\n return {\n leftPaneMaxSize,\n rightPaneMaxSize\n };\n },\n\n _onResizeStart: function(e) {\n const that = this;\n\n e.stopPropagation();\n\n const splitterBarIndex = that._getElementIndex(e.currentTarget, `.${SPLITTER}`);\n\n that._addResizeOverlays(splitterBarIndex);\n },\n\n _addResizeOverlays: function(splitterBarIndex) {\n const that = this;\n\n that._addResizeOverlay(splitterBarIndex);\n that._addResizeOverlay(splitterBarIndex + 1);\n },\n\n _addResizeOverlay: function(paneIndex) {\n const that = this;\n const paneElement = that._getPaneElement(paneIndex);\n\n if (!paneElement) {\n return;\n }\n\n const overlay = $(`
    `);\n\n $(paneElement).append(overlay);\n },\n\n\n _getPaneElement: function(paneIndex) {\n const that = this;\n const panes = that._getPaneElements();\n return panes[paneIndex];\n },\n\n _getPaneElements: function() {\n const that = this;\n const panes = Array.from(that.element.children() || []).filter(x => $(x).hasClass(\"k-pane\") || $(x).hasClass(\"k-splitter\"));\n return panes;\n },\n\n _getElementIndex: function(element, childrenSelector) {\n if (!element) {\n return [].indexOf(element);\n }\n\n let children = Array.from(element.parent().children());\n\n if (childrenSelector) {\n children = children.filter(x => x.matches(childrenSelector));\n }\n\n return Array.from(children).indexOf(element[0]);\n },\n\n destroy: function() {\n const that = this;\n\n Widget.fn.destroy.call(that);\n\n that.element.off(NS);\n that.element.empty();\n\n that._resizable.destroy();\n kendo.destroy(that.element);\n }\n });\n\n const DockManager = Widget.extend({\n init: function(element, options) {\n const that = this;\n\n Widget.fn.init.call(that, element, options);\n options = $.extend(true, {}, options);\n that.element.addClass(DOCK_MANAGER);\n\n that.panesContainer = $(`
    `).appendTo(that.element);\n that._processPanes(that.options.rootPane);\n that._refreshToolbar();\n that._createPane(that.panesContainer, that.options.rootPane);\n that._bindEvents();\n that._initNavigator();\n that._initUnpinnedResizable();\n\n kendo.notify(that);\n },\n\n events: [\n CLOSE,\n PIN,\n UNPIN,\n DOCK,\n INNER_DOCK,\n RESIZE,\n DRAG,\n DRAGSTART,\n DRAGEND\n ],\n\n options: {\n name: 'DockManager',\n rootPane: {\n type: SPLIT,\n orientation: HORIZONTAL,\n panes: []\n }\n },\n\n paneDefaults: {\n visible: true,\n closeable: true,\n collapsed: false,\n size: ''\n },\n\n actions: [\n {\n name: \"pin\",\n icon: \"unpin\",\n shouldAdd: pane => pane.unpinnable && pane.unpinnable.unpinned\n },{\n name: \"unpin\",\n icon: \"pin\",\n shouldAdd: pane => pane.unpinnable && !pane.unpinnable.unpinned\n },{\n name: \"minimize\",\n icon: \"minimize\",\n shouldAdd: pane => pane.minimizable\n },{\n name: \"maximize\",\n icon: \"maximize\",\n shouldAdd: pane => pane.maximizable\n },{\n name: \"close\",\n icon: \"x\",\n shouldAdd: pane => pane.closeable != false\n },{\n name: \"more\",\n icon: \"more-vertical\",\n shouldAdd: pane => false //not needed for v1 as currently only 2 actions are available\n }\n ],\n\n indicators: [\n {\n name: TOP,\n top: 0,\n left: \"50%\",\n transform: \"translate(-50%, 0)\",\n previewTop: () => 0,\n previewLeft: () => 0,\n rotate: \"0deg\"\n },{\n name: BOTTOM,\n top: \"100%\",\n left: \"50%\",\n transform: \"translate(-50%, -100%)\",\n previewTop: (hoveredPaneHeight, draggedPaneHeight) => hoveredPaneHeight - draggedPaneHeight,\n previewLeft: () => 0,\n rotate: \"180deg\"\n },{\n name: LEFT,\n top: \"50%\",\n left: 0,\n transform: \"translate(0, -50%)\",\n previewTop: () => 0,\n previewLeft: () => 0,\n rotate: \"270deg\"\n },{\n name: RIGHT,\n top: \"50%\",\n left: \"100%\",\n transform: \"translate(-100%, -50%)\",\n previewTop: () => 0,\n previewLeft: (hoveredPaneWidth, draggedPaneWidth) => hoveredPaneWidth - draggedPaneWidth,\n rotate: \"90deg\"\n },{\n name: MIDDLE,\n previewTop: () => 0,\n previewLeft: () => 0,\n }\n ],\n\n togglePane: function(id) {\n const that = this,\n pane = that._getPaneById(that.options.rootPane, \"id\", id);\n\n if (pane != undefined$1) {\n that._togglePane(pane);\n }\n },\n\n removePane: function(id) {\n const that = this;\n const pane = that._getPaneById(that.options.rootPane, \"id\", id);\n\n if (pane != undefined$1) {\n that._removePane(pane);\n }\n },\n\n getOptions: function() {\n const that = this;\n return that.options;\n },\n\n setOptions: function(options) {\n const that = this;\n let currentOptions = that.getOptions();\n kendo.deepExtend(currentOptions, options);\n\n that.destroy();\n that.element.empty();\n\n that.init(that.element, currentOptions);\n\n },\n\n _initUnpinnedResizable: function() {\n const that = this;\n\n that._unpinnedResizable = new kendo.ui.Resizable(that.unpinnedContainer, {\n orientation: HORIZONTAL,\n handle: \".k-splitbar-horizontal.k-splitbar-draggable-horizontal\",\n resize: function(e) {\n const delta = e.x.delta;\n const containerWidth = that.unpinnedContainer.width();\n\n that.unpinnedContainer.width(containerWidth + delta);\n }\n });\n },\n\n _bindEvents: function() {\n const that = this;\n\n that.element.on(CLICK + NS, `.k-dock-manager-toolbar .${KBUTTON}`, that._toolbarButtonClick.bind(that));\n that.element.on(CLICK + NS, `.${KPANES_CONTAINER}`, that._hideUnpinnedPanes.bind(that));\n that.element.on(CLICK + NS, `.${KBUTTON}[${ACTION_ATTR}=\"pin\"], .${KBUTTON}[${ACTION_ATTR}=\"unpin\"]`, that._pinPaneClick.bind(that));\n that.element.on(CLICK + NS, `.${KBUTTON}[${ACTION_ATTR}=\"close\"]`, that._closePane.bind(that));\n that.element.on(\"mouseenter\" + NS, `.${KDOCK_INDICATOR}`, that._displayDockPreview.bind(that));\n that.element.on(\"mouseleave\" + NS, `.${KDOCK_INDICATOR}`, that._hideDockPreview.bind(that));\n },\n\n _hideUnpinnedPanes: function(e) {\n const that = this;\n const unpinnedPanes = that.unpinnedContainer.find(`.${KPANE}`);\n const currentlyOpened = unpinnedPanes.filter(\":visible\");\n const unpinnedContainerVisible = that.unpinnedContainer.is(\":visible\");\n\n if (currentlyOpened && unpinnedContainerVisible) {\n that._toolbar.find(`.${KSELECTED}`).removeClass(KSELECTED);\n that.unpinnedContainer.addClass(KHIDDEN);\n return;\n }\n },\n\n _toolbarButtonClick: function(e) {\n const that = this;\n const itemUid = $(e.currentTarget).attr(UID_ATTR);\n const unpinnedPanes = that.unpinnedContainer.find(`.${KPANE}`);\n const currentlyOpened = unpinnedPanes.filter(\":visible\");\n const unpinnedContainerVisible = that.unpinnedContainer.is(\":visible\");\n\n e.preventDefault();\n that._toolbar.find(`.${KBUTTON}`).removeClass(KSELECTED);\n\n if (currentlyOpened.attr(UID_ATTR) === itemUid && unpinnedContainerVisible) {\n that.unpinnedContainer.addClass(KHIDDEN);\n return;\n }\n\n that._showUnpinnedPane(itemUid);\n },\n\n _showUnpinnedPane: function(paneUid) {\n const that = this;\n const toolbarWidth = that._toolbar.outerWidth();\n const pane = that._findPaneByUid(paneUid);\n const hasUnpinnedSize = pane.unpinnable.unpinnedSize;\n\n that.unpinnedContainer.removeClass(KHIDDEN).css({ left: `${toolbarWidth}px` });\n that.unpinnedContainer.find(`.${KPANE}`).addClass(KHIDDEN);\n that.unpinnedContainer.find(paneSelector(paneUid)).removeClass(KHIDDEN);\n\n if (hasUnpinnedSize) {\n that.unpinnedContainer.css({ width: `${pane.unpinnable.unpinnedSize}` });\n }\n\n that._toolbar.find(`.${KBUTTON}[${UID_ATTR}=\"${paneUid}\"]`).addClass(KSELECTED);\n },\n\n _pinPaneClick: function(e) {\n const that = this;\n const button = $(e.currentTarget);\n const isTabbed = button.parent().is(\"li\");\n const action = button.attr(ACTION_ATTR);\n const paneElement = isTabbed ? button.parent() : $(e.currentTarget).closest(`.${KPANE}`);\n const pane = that._findPaneByUid(paneElement.attr(UID_ATTR));\n const isUnpinned = pane.unpinnable.unpinned;\n const parentPane = that._findPaneByUid(pane.parentUid);\n const parentPaneElement = that.panesContainer.find(`.${KPANE}[${UID_ATTR}=\"${parentPane.uid}\"], .${SPLITTER}[${UID_ATTR}=\"${parentPane.uid}\"]`);\n const eventData = { pane: pane, paneElement: paneElement };\n\n if (isUnpinned) {\n kendo.destroy(paneElement);\n paneElement.remove();\n }\n\n pane.unpinnable.unpinned = action === PIN ? false : true;\n that._refreshRootPane();\n that.unpinnedContainer.toggleClass(KHIDDEN, action === PIN);\n\n if (action === \"pin\") {\n that.trigger(PIN, eventData);\n return;\n }\n\n that.trigger(UNPIN, eventData);\n that._showUnpinnedPane(pane.uid);\n },\n\n _closePane: function(e) {\n const that = this;\n const button = $(e.currentTarget);\n const isTabbed = button.parent().is(\"li\");\n const paneElement = isTabbed ? button.parent() : $(e.currentTarget).closest(`.${KPANE}`);\n const pane = that._findPaneByUid(paneElement.attr(UID_ATTR));\n const parentPane = that._findPaneByUid(pane.parentUid);\n const parentPaneElement = that.panesContainer.find(`.${KPANE}[${UID_ATTR}=\"${parentPane.uid}\"], .${SPLITTER}[${UID_ATTR}=\"${parentPane.uid}\"]`);\n const paneIndex = parentPane.panes.indexOf(pane);\n const eventData = { pane: pane, paneElement: paneElement, event: e };\n\n if (that.trigger(CLOSE, eventData)) {\n e.preventDefault();\n }\n\n if (pane.unpinnable && pane.unpinnable.unpinned) {\n that.unpinnedContainer.addClass(KHIDDEN);\n }\n\n parentPane.panes.splice(paneIndex, 1);\n\n if (that._shouldHideParent(parentPane)) {\n parentPane.visible = false;\n }\n\n that._refreshRootPane();\n },\n\n _shouldHideParent: function(pane) {\n const that = this,\n parent = that._findPaneByUid(pane.parentUid);\n\n if (pane.panes.length == 0) {\n if (pane.type == TAB && parent.panes.length == 1) {\n parent.panes.splice(0,1);\n parent.visible = false;\n }\n return true;\n }\n\n if (pane.panes.length == 1 &&\n pane.panes[0].type == TAB &&\n !pane.panes.some(x => x.visible)) {\n return true;\n }\n\n return false;\n },\n\n _refreshPane: function(paneElement, pane) {\n const that = this;\n const parentElement = paneElement.parent();\n const isTabbed = paneElement.is(`.${KPANE_TABBED}`);\n\n kendo.destroy(paneElement);\n isTabbed ? paneElement.empty() : paneElement.remove();\n that._refreshToolbar();\n that._createPane(isTabbed ? paneElement : parentElement, pane);\n },\n\n _processPanes: function(pane) {\n const that = this;\n pane.uid = pane.uid || kendo.guid();\n that._extendPane(pane);\n\n if (pane.type === SPLIT && !pane.orientation) {\n pane.orientation = HORIZONTAL;\n }\n\n pane.panes.forEach((childPane) => {\n childPane.parentUid = pane.uid;\n\n if (childPane.type == CONTENT) {\n if (childPane.unpinnable === undefined$1 || childPane.unpinnable === true) {\n childPane.unpinnable = {\n unpinned: false\n };\n }\n childPane.uid = childPane.uid || kendo.guid();\n }\n\n if (childPane.panes && childPane.panes.length) {\n that._processPanes(childPane);\n }\n });\n },\n\n _extendPane: function(pane) {\n const that = this;\n\n if (pane.panes) {\n for (var j = 0; j < pane.panes.length; j++) {\n pane.panes.forEach(subItem => {\n that._extendPane(subItem);\n });\n }\n }\n\n extend(pane, {\n visible: pane.visible === undefined$1 ? that.paneDefaults.visible : pane.visible,\n closeable: pane.closeable === undefined$1 ? that.paneDefaults.closeable : pane.closeable,\n collapsed: pane.collapsed === undefined$1 ? that.paneDefaults.collapsed : pane.collapsed,\n size: pane.size === undefined$1 ? that.paneDefaults.size : pane.size,\n });\n },\n\n _togglePane: function(pane) {\n const that = this;\n\n pane.visible = !pane.visible;\n that._refreshRootPane();\n },\n\n _removePane: function(pane) {\n const that = this;\n const parentPane = that._findPaneByUid(pane.parentUid);\n const paneIndex = parentPane.panes.indexOf(pane);\n const parentPaneElement = that.panesContainer.find(`[${UID_ATTR}=\"${pane.uid}\"]`).parent();\n\n parentPane.panes.splice(paneIndex, 1);\n that._refreshRootPane();\n },\n\n _refreshToolbar: function() {\n const that = this;\n const unpinnedPanes = that._unpinnedPanes();\n const unpinnedPannesContainer = $(`
    `).addClass(KUNPINNED_CONTAINER);\n\n if (!that.unpinnedContainer) {\n that.unpinnedContainer = unpinnedPannesContainer;\n unpinnedPannesContainer.append(unpinnedResizeSplitbar);\n unpinnedPannesContainer.insertBefore(that.panesContainer);\n }\n\n if (!unpinnedPanes.length) {\n that._toolbar && that._toolbar.remove();\n that._toolbar = null;\n return;\n }\n\n if (!that._toolbar) {\n that._toolbar = that.element.prepend(TOOLBAR_TEMPLATE).find(`.${DOCK_MANAGER_TOOLBAR}`);\n }\n\n that._toolbar.empty();\n\n for (let i = 0; i < unpinnedPanes.length; i++) {\n const pane = unpinnedPanes[i];\n const button = $(kendo.html.renderButton({ fillMode: \"flat\", size: \"medium\" }))\n .addClass(TOOLBAR_BUTTON)\n .append(buttonTextTemplate(that._paneHeader(pane)));\n\n button.attr(UID_ATTR, pane.uid);\n that._toolbar.append(button);\n\n if (i < unpinnedPanes.length - 1) {\n that._toolbar.append(SEPARATOR);\n }\n }\n },\n\n destroy: function() {\n const that = this;\n\n Widget.fn.destroy.call(that);\n\n that.element.off(NS);\n that.element.empty();\n\n kendo.destroy(that.wrapper);\n },\n\n refresh: function() {\n const that = this;\n kendo.destroy(that.unpinnedContainer);\n that.unpinnedContainer.empty();\n that._refreshRootPane();\n },\n\n _refreshRootPane: function() {\n const that = this;\n const rootPaneElement = that.element.find(`[${UID_ATTR}=\"${that.options.rootPane.uid}\"]`);\n\n that._refreshPane(rootPaneElement, that.options.rootPane);\n },\n\n _createSplitPane: function(parentElement, pane) {\n const that = this;\n const splitterElement = $(\"
    \").attr(UID_ATTR, pane.uid);\n const splitterOptions = {\n orientation: pane.orientation || HORIZONTAL,\n panes: []\n };\n\n if (!pane.panes.some(x=>x.visible)) {\n return;\n }\n\n parentElement.append(splitterElement);\n\n pane.panes.forEach((childPane) => {\n const paneOptions = {\n uid: childPane.uid\n };\n const paneElement = $(PANE).removeClass(KSTATIC_PANE);\n\n if (childPane.unpinnable && childPane.unpinnable.unpinned) {\n that._createUnpinnedPane(childPane);\n return;\n }\n\n if (childPane.size) {\n paneOptions.size = childPane.size;\n }\n\n if (childPane.visible != undefined$1) {\n paneOptions.visible = childPane.visible;\n }\n\n if (childPane.visible) {\n splitterElement.append(paneElement);\n that._createPane(paneElement, childPane);\n splitterOptions.panes.push(paneOptions);\n }\n });\n\n pane.splitter = new DockSplitter(splitterElement, splitterOptions); // eslint-disable-line no-new\n pane.splitter.bind(RESIZE, that._updatePaneSize.bind(that));\n },\n\n _updatePaneSize: function(e) {\n const that = this;\n const leftPane = that._findPaneByUid(e.leftPane.uid),\n rightPane = that._findPaneByUid(e.rightPane.uid);\n\n leftPane.size = e.leftPane.size;\n rightPane.size = e.rightPane.size;\n that.trigger(RESIZE, { ev: e, leftPane: leftPane, rightPane: rightPane });\n },\n\n _createTabPane: function(parentElement, pane) {\n const that = this;\n const tabStripElement = $(\"
    \");\n const tabContainer = $(\"
      \");\n const tabStripOptions = {\n animation: false\n };\n const selectedPane = (pane.selected === undefined$1 || pane.panes.indexOf(pane.panes[pane.selected]) == -1 || pane.panes[pane.selected].unpinnable.unpinned) ? 0 : pane.selected;\n\n if (!pane.panes.some(x=>x.visible)) {\n return;\n }\n\n tabStripElement.append(tabContainer);\n parentElement.append(tabStripElement);\n parentElement.attr(UID_ATTR, pane.uid);\n parentElement.addClass(KPANE_TABBED);\n\n pane.panes.forEach((childPane) => {\n const tab = $(tabTemplate(that._paneHeader(childPane))).attr(UID_ATTR, childPane.uid);\n const contentElement = $(\"
      \");\n\n if (childPane.unpinnable && childPane.unpinnable.unpinned) {\n that._createUnpinnedPane(childPane);\n return;\n }\n\n if (childPane.visible) {\n that._addActions(tab, childPane);\n tabContainer.append(tab);\n tabStripElement.append(contentElement);\n that._createPane(contentElement, childPane);\n }\n });\n\n $(tabContainer.children()[selectedPane]).addClass(KACTIVE);\n tabStripElement.kendoTabStrip(tabStripOptions);\n },\n\n _createContentPane: function(parentElement, pane) {\n const that = this;\n const content = typeof pane.content === \"function\" ? kendo.template(pane.content)({}) : pane.content;\n const element = $(contentPaneTemplate(extend({}, pane, { title: that._paneHeader(pane), content: content })));\n const parentPane = that._findPaneByUid(pane.parentUid);\n const isUnnpinned = pane.unpinnable && pane.unpinnable.unpinned;\n\n\n if (parentPane && parentPane.type === TAB && !isUnnpinned) {\n parentElement.append(content);\n return;\n }\n\n parentElement.addClass(KKPINNED_PANE)\n .removeClass(KSTATIC_PANE)\n .attr(UID_ATTR, pane.uid);\n that._addActions(element.find(`.${KPANE_ACTIONS}`), pane);\n parentElement.append(element);\n },\n\n _createUnpinnedPane: function(pane) {\n const that = this;\n const paneElement = $(PANE).removeClass(KSTATIC_PANE);\n\n if (that.unpinnedContainer.find(paneSelector(pane.uid)).length) {\n return;\n }\n\n that.unpinnedContainer.prepend(paneElement);\n that._createContentPane(paneElement, pane);\n },\n\n _addActions: function(actionsContainer, pane) {\n const that = this;\n\n that.actions.forEach((action) => {\n if (action.shouldAdd(pane)) {\n actionsContainer.append($(kendo.html.renderButton({ fillMode: \"flat\", icon: action.icon })).attr(ACTION_ATTR, action.name));\n }\n });\n\n },\n\n _createPane: function(parentElement, pane) {\n const that = this;\n\n if (pane.id) {\n parentElement.attr(\"id\", pane.id);\n }\n\n return that[\"_create\" + capitalizeFirstLetter(pane.type) + \"Pane\"](parentElement, pane);\n },\n\n _unpinnedPanes: function(panes) {\n const that = this;\n const options = that.options;\n let result = [];\n\n if (!panes) {\n panes = options.rootPane.panes;\n }\n\n panes.forEach((pane) => {\n if (pane.unpinnable && pane.unpinnable.unpinned) {\n result.push(pane);\n }\n\n if (pane.panes && pane.panes.length) {\n result = result.concat(that._unpinnedPanes(pane.panes));\n }\n });\n\n return result;\n },\n\n _paneHeader: function(pane) {\n const that = this;\n const parentPane = that._findPaneByUid(pane.parentUid);\n const isTabbed = parentPane && parentPane.type === \"tab\";\n let header = pane.header;\n\n if (isTabbed && pane.tabHeader) {\n header = pane.tabHeader;\n }\n\n if (!header) {\n return pane.title || \"\";\n }\n\n return kendo.template(header)(pane);\n },\n\n _findPaneByUid: function(uid, parent) {\n const that = this;\n let found;\n\n parent = parent || that.options.rootPane;\n\n if (parent.uid === uid) {\n return parent;\n }\n\n parent.panes.forEach((pane) => {\n if (pane.uid === uid) {\n found = pane;\n return;\n }\n\n if (pane.panes && pane.panes.length) {\n const result = that._findPaneByUid(uid, pane);\n\n if (result) {\n found = result;\n return;\n }\n }\n });\n return found;\n },\n\n _getPaneById: function(pane, prop, value) {\n const that = this;\n let found;\n\n if (pane[prop] == value) {\n return pane;\n }\n\n if (pane.panes) {\n pane.panes.forEach((childPane) => {\n let result = that._getPaneById(childPane, prop, value);\n if (result) {\n found = result;\n }\n });\n }\n return found;\n },\n\n _initNavigator: function(params) {\n const that = this;\n\n that.navigatorDraggable = new kendo.ui.Draggable(that.element, {\n autoScroll: true,\n filter: \".k-pane-header, .k-pane-tabbed .k-tabstrip-item\",\n hint: function(element) {\n const isTabbed = element.is(\"li\");\n const paneElement = element.closest(`.${KPANE}`);\n const pane = that._findPaneByUid((isTabbed ? element : paneElement).attr(UID_ATTR));\n const actionsHtml = isTabbed ? that._getActionButtons(element) : paneElement.find(`.${KPANE_ACTIONS}`).html();\n\n return hintTemplate({\n width: paneElement.width(),\n height: paneElement.height(),\n content: pane.content,\n title: that._paneHeader(pane),\n actions: actionsHtml\n });\n },\n dragstart: that._dragStart.bind(that),\n dragend: that._dragEnd.bind(that),\n drag: that._drag.bind(that)\n });\n },\n\n _dragStart: function(e) {\n const that = this;\n const target = $(e.currentTarget);\n const pane = target.closest(`.${KPANE}`);\n\n that.draggedPane = {\n width: pane.width(),\n height: pane.height(),\n pane,\n target\n };\n\n that._displayGlobalIndicators();\n\n that.trigger(DRAGSTART, { pane: that.draggedPane.pane, draggableEvent: e });\n },\n\n _dragEnd: function(e) {\n const that = this;\n const hoveredIndicator = that.element.find(`.${KDOCK_INDICATOR}:hover`);\n const eventData = { pane: that.draggedPane.pane, draggableEvent: e };\n\n if (hoveredIndicator.length) {\n that.navigatorDraggable.hint.hide();\n that._updateLayout(hoveredIndicator);\n }\n\n that.element.find(`.${KDOCK_INDICATOR}`).remove();\n that.element.find(`.${KDOCK_PREVIEW}`).remove();\n\n if (!hoveredIndicator.length) {\n that._showHiddenPanes();\n }\n that.trigger(DRAGEND, eventData);\n that.hoveredPane = null;\n that.draggedPane = null;\n },\n\n _drag: function(e) {\n const that = this;\n const currentPane = $(e.elementUnderCursor).closest(`.${KPANE}[${UID_ATTR}]`);\n const pane = that._findPaneByUid(currentPane.attr(UID_ATTR));\n const navigator = $(NAVIGATOR_TEMPLATE);\n const currentPaneUid = currentPane.attr(UID_ATTR);\n const prevPaneUid = that.hoveredPane && that.hoveredPane.attr(UID_ATTR);\n var eventData = { pane: that.draggedPane.pane, draggableEvent: e };\n\n if (that.trigger(DRAG, eventData)) {\n e.preventDefault();\n return;\n }\n\n if (currentPaneUid === prevPaneUid) {\n return;\n }\n\n that.hoveredPane = currentPane;\n that.element.find(`.${KDOCK_NAVIGATOR}`).remove();\n navigator.css({\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%,-50%)\",\n \"z-index\": 100008\n });\n\n if (pane && pane.dockable && !pane.dockable.innerDock) {\n navigator.css(\"display\", \"none\");\n }\n\n currentPane.append(navigator);\n },\n\n _showHiddenPanes: function() {\n const that = this;\n const isTabbed = that.draggedPane.pane.is(`.${KPANE_TABBED}`);\n\n if (isTabbed) {\n return that._showTab();\n }\n\n that._showPane(that.draggedPane.pane);\n },\n\n _showTab: function(tab) {\n if (tab === undefined$1) {\n return;\n }\n\n const that = this;\n const tabstrip = tab.closest(`.${KTABSTRIP}`).data(\"kendoTabStrip\");\n\n tab.show();\n tabstrip.activateTab(tab);\n },\n\n _showPane: function(paneElement) {\n const that = this;\n const splitbar = paneElement.siblings(`.${KSPLITBAR}:hidden`);\n paneElement.show();\n splitbar.show();\n },\n\n _hideDraggedPane: function(draggedElement) {\n const that = this;\n const isTabbed = draggedElement.is(\"li\");\n\n if (isTabbed) {\n return that._hideTab(draggedElement);\n }\n\n that._hidePane(draggedElement);\n },\n\n _hidePane: function(draggedElement) {\n const that = this;\n const paneElement = draggedElement.closest(`.${KPANE}`);\n const prevElement = paneElement.prev();\n const nextElement = paneElement.next();\n\n paneElement.hide();\n\n if (prevElement.is(`.${KSPLITBAR}`)) {\n return prevElement.hide();\n }\n\n nextElement.hide();\n },\n\n _hideTab: function(tab) {\n const that = this;\n const isActive = tab.is(`.${KACTIVE}`);\n const tabstrip = tab.closest(`.${KTABSTRIP}`).data(\"kendoTabStrip\");\n\n tab.hide();\n\n if (isActive) {\n tabstrip.activateTab(\"li:visible:first\");\n }\n },\n\n _getActionButtons: function(paneElement) {\n const buttons = paneElement.find(\"button\");\n const container = $(\"
      \");\n\n buttons.each((_, button) => container.append($(button).clone()));\n\n return container.html();\n },\n\n _displayGlobalIndicators: function() {\n const that = this;\n\n that.indicators.forEach((indicator) => {\n const element = $(INDICATOR_TEMPLATE);\n\n if (indicator.name === \"middle\") {\n return;\n }\n\n that.element.append(element);\n element.css({\n position: \"absolute\",\n \"z-index\": \"100002\",\n top: indicator.top,\n left: indicator.left,\n transform: `${indicator.transform} rotate(${indicator.rotate})`\n });\n element.attr(INDICATOR_ATTR, indicator.name);\n });\n },\n\n _displayDockPreview: function(e) {\n const that = this;\n const indicator = $(e.currentTarget);\n const isGlobalIndicator = !indicator.parent().is(`.${KDOCK_NAVIGATOR}`);\n const indicatorName = indicator.attr(INDICATOR_ATTR);\n const indicatorUid = indicator.attr(UID_ATTR);\n const indicatorData = that.indicators.filter(i => i.name === indicatorName)[0];\n const previewElement = $(`
      `);\n const container = isGlobalIndicator ? that.panesContainer : that.hoveredPane;\n const toolbarWidth = that._toolbar ? that._toolbar.outerWidth() : 0;\n const containerWidth = container.outerWidth();\n const containerHeight = container.outerHeight();\n const existingPreview = indicatorUid && container.find(`.${KDOCK_PREVIEW}[${UID_ATTR}=\"${indicatorUid}\"]`);\n const uid = kendo.guid();\n let width = that.draggedPane.width;\n let height = that.draggedPane.height;\n\n if (existingPreview && existingPreview.length) {\n return existingPreview.show();\n }\n\n if (indicatorName === MIDDLE) {\n width = containerWidth;\n height = containerHeight;\n }\n\n if (indicatorName === TOP || indicatorName === BOTTOM) {\n if (height > containerHeight / 2) {\n height = containerHeight / 2;\n }\n\n width = containerWidth;\n }\n\n if (indicatorName === LEFT || indicatorName === RIGHT) {\n if (width > containerWidth / 2) {\n width = containerWidth / 2;\n }\n\n height = containerHeight;\n }\n\n const css = {\n position: \"absolute\",\n \"z-index\": 100000,\n top: indicatorData.previewTop(containerHeight, height),\n left: indicatorData.previewLeft(containerWidth, width) + (isGlobalIndicator ? toolbarWidth : 0),\n width: width,\n height\n };\n\n previewElement.css(css);\n previewElement.attr(INDICATOR_ATTR, indicatorData.name)\n .attr(UID_ATTR, uid);\n indicator.attr(UID_ATTR, uid);\n container.append(previewElement);\n that.draggedPane.preview = {\n width,\n height\n };\n that.draggedPane.container = {\n width: containerWidth,\n height: containerHeight\n };\n },\n\n _hideDockPreview: function() {\n const that = this;\n\n that.element.find(`.${KDOCK_PREVIEW}`).hide();\n },\n\n _updateLayout: function(indicator) {\n const that = this;\n const isTabbed = that.draggedPane.target.is(\"li\");\n const isGlobalIndicator = !indicator.parent().is(`.${KDOCK_NAVIGATOR}`);\n const paneElement = isTabbed ? that.draggedPane.target : that.draggedPane.pane;\n const hoveredPane = that._findPaneByUid(that.hoveredPane.attr(UID_ATTR));\n const draggedPane = that._findPaneByUid(paneElement.attr(UID_ATTR));\n const location = indicator.attr(INDICATOR_ATTR);\n const draggedPaneParent = that._findPaneByUid(draggedPane.parentUid);\n const draggedPaneIndex = draggedPaneParent.panes.indexOf(draggedPane);\n const rootPaneElement = that.element.find(`[${UID_ATTR}=\"${that.options.rootPane.uid}\"]`);\n\n draggedPaneParent.panes.splice(draggedPaneIndex, 1);\n location == MIDDLE ? that._tabDock(hoveredPane, draggedPane) : that._splitDock(hoveredPane, draggedPane, location, isGlobalIndicator);\n that._processPanes(that.options.rootPane);\n that._adjustSiblingSizes(draggedPane, location, isGlobalIndicator);\n that._refreshPane(rootPaneElement, that.options.rootPane);\n location == MIDDLE ?\n that.trigger(INNER_DOCK, { pane: draggedPane, paneElement: paneElement }) :\n that.trigger(DOCK, { pane: draggedPane, paneElement: paneElement });\n },\n\n _splitDock: function(targetPane, pane, location, isGlobalDock) {\n const that = this;\n const targetPaneParent = isGlobalDock ? that.options.rootPane : that._findPaneByUid(targetPane.parentUid);\n const targetPaneIndex = targetPaneParent.panes.indexOf(targetPane);\n const action = location === TOP || location === LEFT ? UNSHIFT : PUSH;\n const paneIndex = targetPaneIndex + (action === UNSHIFT ? 0 : 1);\n const orientation = location === TOP || location === BOTTOM ? VERTICAL : HORIZONTAL;\n const dimension = location === TOP || location === BOTTOM ? HEIGHT : WIDTH;\n const newParentPane = {\n type: SPLIT,\n orientation,\n panes: [],\n };\n const previewSize = that.draggedPane.preview[dimension];\n const size = `${previewSize}px`;\n\n pane.size = size;\n\n if (isGlobalDock) {\n newParentPane.panes.push(targetPaneParent);\n (location === TOP || location === LEFT) ? newParentPane.panes.unshift(pane) : newParentPane.panes.push(pane);\n that.options.rootPane = newParentPane;\n return;\n }\n\n if (((location === TOP || location === BOTTOM) && targetPaneParent.orientation === VERTICAL) ||\n ((location === LEFT || location === RIGHT) && targetPaneParent.orientation === HORIZONTAL)) {\n return targetPaneParent.panes.splice(paneIndex, 0, pane);\n }\n\n if (targetPane) {\n newParentPane.size = targetPane.size;\n targetPane.size = null;\n }\n\n targetPaneParent.panes.splice(targetPaneIndex, 1);\n newParentPane.panes.push(targetPane);\n newParentPane.panes[action](pane);\n targetPaneParent.panes.splice(targetPaneIndex, 0, newParentPane);\n },\n\n _tabDock: function name(targetPane, pane) {\n const that = this;\n const targetPaneParent = that._findPaneByUid(targetPane.parentUid);\n const targetPaneIndex = targetPaneParent.panes.indexOf(targetPane);\n const newParentPane = {\n type: TAB,\n panes: [\n targetPane,\n pane\n ]\n };\n\n if (targetPane.type === TAB) {\n targetPane.panes.push(pane);\n return;\n }\n\n targetPaneParent.panes.splice(targetPaneIndex, 1);\n targetPaneParent.panes.splice(targetPaneIndex, 0, newParentPane);\n\n },\n\n _adjustSiblingSizes: function(pane, location, isGlobalDock) {\n const that = this;\n const siblings = that._getSiblings(pane);\n const dimension = location === TOP || location === BOTTOM ? HEIGHT : WIDTH;\n const parentSize = that.draggedPane.container[dimension];\n const draggedPaneSize = that.draggedPane[dimension];\n const newParentSize = parentSize - draggedPaneSize;\n const noSizePanes = [];\n let freeSpace = newParentSize;\n\n if (location === MIDDLE) {\n return;\n }\n\n if (siblings.length === 2) {\n siblings[0].size = null;\n return;\n }\n\n siblings.forEach((childPane) => {\n if (childPane.uid === pane.uid) {\n return;\n }\n\n if (!childPane.size) {\n noSizePanes.push(childPane);\n return;\n }\n\n childPane.size = that._calculateNewSize(parentSize, newParentSize, childPane.size);\n freeSpace -= childPane.size;\n });\n\n noSizePanes.forEach((noSizePane) => {\n const newSize = freeSpace / noSizePanes.length;\n\n noSizePane.size = newSize;\n });\n\n },\n\n _calculateNewSize: function(parentSize, newParentSize, paneSize) {\n const proportion = newParentSize / parentSize;\n let unit = \"px\";\n let noUnitSize;\n\n if (isPercentageSize(paneSize)) {\n unit = \"%\";\n }\n\n noUnitSize = +paneSize.replace(unit, \"\");\n\n return `${noUnitSize * proportion}${unit}`;\n },\n\n _getSiblings: function(pane) {\n const that = this;\n const parent = that._findPaneByUid(pane.parentUid);\n\n return parent.panes.filter(p => p.visible !== false &&\n p.uid !== pane.uid &&\n (p.unpinnable && p.unpinnable.unpinned !== true));\n }\n });\n\n ui.plugin(DockManager);\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}