{"version":3,"sources":["webpack://GridStack/webpack/universalModuleDefinition","webpack://GridStack/./src/gridstack-dd.ts","webpack://GridStack/./src/gridstack-ddi.ts","webpack://GridStack/./src/gridstack-engine.ts","webpack://GridStack/./src/gridstack-jq.ts","webpack://GridStack/./src/gridstack.ts","webpack://GridStack/./src/jq/gridstack-dd-jqueryui.ts","webpack://GridStack/./src/utils.ts","webpack://GridStack/./src/jq/jquery-ui.js","webpack://GridStack/./src/jq/jquery.js","webpack://GridStack/./src/jq/jquery.ui.touch-punch.js","webpack://GridStack/webpack/bootstrap","webpack://GridStack/webpack/startup"],"names":["root","factory","exports","module","define","amd","self","GridStackDD","GridStackDDI","get","el","this","draggable","resizable","gridstackNode","_initDD","_itemRemoving","remove","node","undefined","grid","_isAboutToRemove","classList","add","GridStack","prototype","_setupAcceptWidget","opts","staticGrid","acceptWidgets","removable","droppable","cellHeight","cellWidth","onDrag","event","helper","parent","getBoundingClientRect","top","left","ui","position","_temporaryRemoved","x","Math","max","round","y","autoPosition","engine","nodeBoundFix","willItFit","off","_willFitPos","Utils","copyPos","_onStartMoving","_dragOrResize","accept","subGrid","canAccept","selector","matches","maxRow","n","w","h","minW","minH","on","_leave","getCellHeight","_readAttr","_isExternal","offsetWidth","offsetHeight","_gridstackNodeOrig","cleanupNode","wasAdded","placeholder","parentElement","origNode","oGrid","removedNodes","push","_triggerRemoveEvent","cloneNode","removePositioningStyles","_writeAttr","appendChild","_updateContainerHeight","addedNodes","_triggerAddEvent","_triggerChangeEvent","endUpdate","_gsEventHandler","type","window","setTimeout","_prepareDragDropByNode","removeNode","_setupRemoveDrop","trashEl","document","querySelector","isDroppable","removableOptions","setupDragIn","_dragIn","_dragInOptions","dragIn","dragInOptions","revert","handle","scroll","appendTo","dd","getElements","forEach","isDraggable","noMove","disableDrag","noResize","disableResize","onStartMoving","target","dragOrResize","onEndMoving","_moving","_lastTried","gridToNotify","_orig","_writePosAttr","addNode","_extraDragRow","start","stop","drag","resize","cleanNodes","beginUpdate","_lastUiPosition","_prevYPix","cacheRects","marginTop","marginRight","marginBottom","marginLeft","maxW","maxH","restoreInitial","resizing","p","mLeft","mRight","mTop","mBottom","mHeight","mWidth","min","distance","updateScrollPosition","prev","collide","row","getRow","extra","updateScrollResize","size","width","height","rect","moveNodeCheck","_skipDown","onParentResize","movable","els","val","disable","enableMove","enableResize","_triggerEvent","enable","doEnable","nodes","pluginClass","ddi","registerPlugin","GridStackEngine","column","onChange","_float","float","batchMode","_prevFloat","saveInitial","_packNodes","_notify","nn","_hasLocked","opt","_sortNodes","nested","swap","area","_useEntireRowArea","skip","didMove","newOpt","pack","moved","locked","moveNode","skip2","find","isIntercepted","filter","o","collides","_rect","r0","r","r2","yOver","Number","MAX_VALUE","xOver","overMax","over","right","bottom","a","b","_doSwap","_dirty","touching","isTouching","t","length","batchUpdate","copyNodes","commit","dir","sort","_updating","newY","i","_id","_idSeq","defaults","isNaN","before","_inColumnResize","cacheOneLayout","samePos","verify","removeDOM","dirtyNodes","Array","isArray","concat","getDirtyNodes","some","triggerAddEvent","dup","prepareNode","_removeDOM","floor","box","_fixCollisions","triggerEvent","_layouts","changedPosConstrain","clonedNode","clone","map","canMove","c","content","prevPos","collideAll","needToMove","collideCoverage","reduce","saveElement","len","layout","list","wl","l","key","ratio","prevColumn","cacheLayout","newNodes","domOrder","cacheNodes","lastIndex","cacheNode","j","findIndex","splice","move","scale","clear","copy","index","prop","GridDefaults","minRow","itemClass","placeholderClass","placeholderText","handleClass","styleInHead","cellHeightThrottle","margin","auto","minWidth","animate","alwaysShowResizeHandle","autoHide","handles","rtl","marginUnit","cellHeightUnit","disableOneColumnMode","oneColumnModeDomSort","rowAttr","toNumber","getAttribute","cloneDeep","toBool","_styleSheetClass","random","toFixed","initMargin","_widthOrContainer","_prevColumn","getColumn","style","direction","parentGridItemEl","closestByClass","_isNested","_isAutoCellHeight","_setStaticClass","cbNodes","_updateStyles","elements","getGridItems","parseInt","e","_prepareElement","setAnimation","_updateWindowResizeEvent","options","elOrString","getGridElement","gridstack","console","error","grids","getGridElements","contains","doc","implementation","createHTMLDocument","body","innerHTML","class","children","init","load","_placeholder","placeholderChild","createElement","className","arguments","warn","id","addWidget","domAttr","_insertNotAppend","prepend","autoColumn","ops","addGrid","_autoColumn","saveContent","saveGridOpt","save","sub","removeInternalAndSame","addAndRemove","items","_ignoreLayoutsNodeChange","removed","removeWidget","item","update","forcePixel","rows","marginDiff","data","parseHeight","unit","clientWidth","innerWidth","compact","domNodes","oldColumn","updateNodeWidths","from","setStatic","parentNode","removeChild","removeAll","_removeStylesheet","removeAttribute","useDocRelative","containerPos","documentElement","scrollTop","offsetTop","offsetLeft","relativeLeft","relativeTop","columnWidth","rowHeight","isAreaEmpty","getElement","name","callback","indexOf","split","noData","detail","addEventListener","log","removeEventListener","doAnimate","updateClass","m","keys","k","changed","ddChanged","value","layoutsNodesChange","CustomEvent","bubbles","Event","dispatchEvent","_styles","removeStylesheet","forceUpdate","prefix","styleLocation","createStylesheet","_max","addCSSRule","getHeight","setAttribute","String","removeProperty","same","attrs","resizeHandles","hasOwnProperty","classes","changedColumn","oneColumn","_cellHeightThrottle","throttle","forceRemove","workTodo","_windowResizeBind","bind","margins","Engine","$","GridStackDDJQueryUI","$el","containment","dragOut","_accept","Boolean","f","oldName","newName","rev","wrapper","args","apply","info","oldAttr","querySelectorAll","getElementById","substring","col","styleSheet","cssText","createTextNode","insertBefore","firstChild","getElementsByTagName","sheet","rules","addRule","insertRule","v","toLowerCase","match","Error","parseFloat","sources","source","Object","minMax","func","delay","isWaiting","scrollingElement","getComputedStyle","test","overflow","overflowY","getScrollElement","innerHeightOrClientHeight","innerHeight","clientHeight","offsetDiffDown","offsetDiffUp","scrollEl","prevScroll","abs","pointerPosY","clientY","scrollBy","behavior","obj","ret","skipFields","version","orig","widgetUuid","widgetSlice","slice","cleanData","elems","events","elem","_data","triggerHandler","widget","base","existingConstructor","constructor","basePrototype","proxiedPrototype","namespace","fullName","Widget","extend","expr","element","_createWidget","_proto","_childConstructors","each","isFunction","_super","_superApply","returnValue","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","bridge","input","call","inputIndex","inputLength","isPlainObject","object","fn","isMethodCall","methodValue","instance","charAt","jquery","pushStack","option","_init","defaultElement","disabled","create","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","destroy","ownerDocument","defaultView","parentWindow","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","noop","that","_destroy","_removeClass","removeData","removeAttr","parts","curOption","shift","pop","_setOptions","_setOption","_setOptionClasses","classKey","currentElements","addClass","_classes","_toggleClass","full","processClassString","checkOption","current","unique","not","join","_untrackClassesElement","inArray","_addClass","toggleClass","suppressDisabledCheck","handlers","delegateElement","handler","handlerProxy","hasClass","guid","eventName","_off","_delay","_hoverable","mouseenter","currentTarget","mouseleave","_focusable","focusin","focusout","originalEvent","trigger","isDefaultPrevented","show","hide","method","defaultEffect","hasOptions","effect","effectName","duration","isEmptyObject","complete","effects","easing","queue","next","createPseudo","dataName","disableSelection","eventType","preventDefault","enableSelection","scrollParent","includeHidden","css","excludeStaticParent","overflowRegex","parents","eq","ie","exec","navigator","userAgent","mouseHandled","cancel","_mouseInit","_mouseDown","stopImmediatePropagation","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","which","elIsCancel","nodeName","closest","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","documentMode","button","altKey","ctrlKey","metaKey","shiftKey","ignoreMissingWhich","_mouseDrag","_mouseStop","clearTimeout","pageX","pageY","plugin","set","proto","plugins","allowDisconnected","nodeType","safeActiveElement","activeElement","safeBlur","mouse","addClasses","axis","connectToSortable","cursor","cursorAt","iframeFix","opacity","refreshPositions","revertDuration","scope","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","stack","zIndex","_setPositionRelative","_setHandleClassName","_removeHandleClassName","is","destroyOnClear","_getHandle","_blurActiveElement","_blockFrames","iframeBlocks","iframe","outerWidth","outerHeight","offset","_unblockFrames","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","cssPosition","offsetParent","hasFixedAncestor","positionAbs","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","_clear","dropBehaviour","prepareOffsets","dragStart","_getParentOffset","relative","_getRelativeOffset","click","noPropagation","_convertPositionTo","_uiHash","dropped","drop","dragStop","handleElement","helperIsFunction","helperProportions","_isRootNode","tagName","po","scrollLeft","scrollIsRootNode","isUserScrollable","ce","relativeContainer","scrollWidth","scrollHeight","d","pos","mod","constrainPosition","co","cancelHelperRemoval","uiSortable","sortables","sortable","isOver","_storedCSS","_helper","innermostIntersecting","_intersectsWith","containerCache","_parent","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","scrolled","snapElements","$t","$o","inst","ts","bs","ls","rs","first","x1","x2","y1","y2","snapping","release","snapItem","group","makeArray","_zIndex","greedy","tolerance","activate","deactivate","out","proportions","isover","isout","_addToManager","droppables","_splice","_activate","_addActiveClass","_deactivate","_removeActiveClass","_over","_addHoverClass","_out","_removeHoverClass","_drop","custom","childrenIntersection","intersect","isOverAxis","reference","toleranceMode","absolute","addBack","droppablesLoop","visible","parentsUntil","greedyChild","parentInstance","intersects","uiBackCompat","hoverClass","activeClass","removeClass","alsoResize","animateDuration","animateEasing","aspectRatio","ghost","maxHeight","maxWidth","minHeight","_num","_isNumber","_hasScroll","has","_aspectRatio","originalElement","_proportionallyResizeElements","wrap","elementIsWrapper","originalResizeStyle","zoom","display","_proportionallyResize","_setupHandles","_handles","exp","insertAfter","_removeHandles","hname","s","se","sw","ne","nw","trim","append","_renderAxis","padPos","padWrapper","capture","curleft","curtop","_renderProxy","originalSize","sizeDiff","originalMousePosition","_propagate","props","smp","dx","dy","_change","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","pr","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","Infinity","_vBoundaries","cpos","csize","ismaxw","ismaxh","isminw","isminh","dw","dh","cw","ch","_getPaddingPlusBorderDimensions","widths","borders","paddings","prel","outerDimensions","elementOffset","cs","step","oc","containerElement","containerOffset","containerPosition","parentData","containerSize","woset","hoset","isParent","isOffsetRelative","cp","pRatio","cop","continueResize","ho","os","op","delta","sum","gridX","gridY","ox","oy","newWidth","newHeight","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","global","noGlobal","arr","getProto","getPrototypeOf","flat","array","class2type","toString","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","script","text","head","toType","jQuery","context","isArrayLike","toArray","num","merge","prevObject","last","even","grep","_elem","odd","end","copyIsArray","deep","expando","replace","isReady","msg","Ctor","globalEval","results","second","invert","callbackExpect","arg","Symbol","iterator","_i","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","rcssescape","fcssescape","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","childNodes","seed","nid","groups","newSelector","newContext","getElementsByClassName","qsa","testContext","toSelector","qsaError","cache","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespaceURI","hasCompare","subWindow","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","hasFocus","href","tabIndex","checked","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","submit","reset","tokens","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","defaultValue","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","targets","prevAll","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","promise","fail","then","Callbacks","_","flag","createOptions","firing","memory","fired","firingIndex","fire","once","stopOnFalse","empty","lock","fireWith","Deferred","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","message","readyException","readyList","completed","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","noCloneChecked","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","attached","fragment","htmlPrefilter","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","writable","noBubble","beforeunload","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","cancelable","changedTouches","eventPhase","view","charCode","keyCode","buttons","clientX","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","focus","blur","pointerenter","pointerleave","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","after","replaceWith","replaceChild","prependTo","replaceAll","original","insert","rnumnonpx","getStyles","opener","old","rboxStyle","curCSS","computed","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","styles","computedVal","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","origName","isCustomProp","setProperty","isFinite","scrollboxSizeBuggy","padding","border","suffix","expand","expanded","propHooks","run","percent","eased","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","prefilter","speed","speeds","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","time","timeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","curValue","clazz","finalValue","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageYOffset","pageXOffset","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","mspointer","msPointerEnabled","touch","TouchEvent","DocumentTouch","maxTouchPoints","msMaxTouchPoints","touchHandled","mouseProto","_touchStart","_startedMove","_startPos","getTouchCoords","_touchMoved","simulateMouseEvent","_touchMove","_touchEnd","timeMoving","endPos","touchType","msTouchAction","touchstart","touchmove","touchend","simulatedType","simulatedEvent","createEvent","initMouseEvent","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"mappings":"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","file":"gridstack-jq.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GridStack\"] = factory();\n\telse\n\t\troot[\"GridStack\"] = factory();\n})(self, function() {\nreturn ","/**\r\n * gridstack-dd.ts 5.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { GridStackDDI } from './gridstack-ddi';\r\nimport { GridItemHTMLElement, GridStackNode, GridStackElement, DDUIData, DDDragInOpt, GridStackPosition } from './types';\r\nimport { GridStack, MousePosition } from './gridstack';\r\nimport { Utils } from './utils';\r\n\r\n/** Drag&Drop drop options */\r\nexport type DDDropOpt = {\r\n /** function or class type that this grid will accept as dropped items (see GridStackOptions.acceptWidgets) */\r\n accept?: (el: GridItemHTMLElement) => boolean;\r\n}\r\n\r\n/** drag&drop options currently called from the main code, but others can be passed in grid options */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport type DDOpts = 'enable' | 'disable' | 'destroy' | 'option' | string | any;\r\nexport type DDKey = 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight';\r\nexport type DDValue = number | string;\r\n\r\n/** drag&drop events callbacks */\r\nexport type DDCallback = (event: Event, arg2: GridItemHTMLElement, helper?: GridItemHTMLElement) => void;\r\n\r\n// TEST let count = 0;\r\n\r\n/**\r\n * Base class implementing common Grid drag'n'drop functionality, with domain specific subclass (h5 vs jq subclasses)\r\n */\r\nexport abstract class GridStackDD extends GridStackDDI {\r\n\r\n /** override to cast to correct type */\r\n static get(): GridStackDD {\r\n return GridStackDDI.get() as GridStackDD;\r\n }\r\n\r\n /** removes any drag&drop present (called during destroy) */\r\n public remove(el: GridItemHTMLElement): GridStackDD {\r\n this.draggable(el, 'destroy').resizable(el, 'destroy');\r\n if (el.gridstackNode) {\r\n delete el.gridstackNode._initDD; // reset our DD init flag\r\n }\r\n return this;\r\n }\r\n\r\n // APIs that must be implemented by subclasses to do actual darg/drop/resize called by GridStack code below\r\n\r\n public abstract resizable(el: GridItemHTMLElement, opts: DDOpts, key?: DDKey, value?: DDValue): GridStackDD;\r\n\r\n public abstract isResizable(el: HTMLElement): boolean;\r\n\r\n public abstract draggable(el: GridItemHTMLElement, opts: DDOpts, key?: DDKey, value?: DDValue): GridStackDD;\r\n\r\n public abstract dragIn(el: GridStackElement, opts: DDDragInOpt): GridStackDD;\r\n\r\n public abstract isDraggable(el: HTMLElement): boolean;\r\n\r\n public abstract droppable(el: GridItemHTMLElement, opts: DDOpts | DDDropOpt, key?: DDKey, value?: DDValue): GridStackDD;\r\n\r\n public abstract isDroppable(el: HTMLElement): boolean;\r\n\r\n public abstract on(el: GridItemHTMLElement, eventName: string, callback: DDCallback): GridStackDD;\r\n\r\n public abstract off(el: GridItemHTMLElement, eventName: string): GridStackDD;\r\n}\r\n\r\n/********************************************************************************\r\n * GridStack code that is doing drag&drop extracted here so main class is smaller\r\n * for static grid that don't do any of this work anyway. Saves about 10k.\r\n * https://www.typescriptlang.org/docs/handbook/declaration-merging.html\r\n * https://www.typescriptlang.org/docs/handbook/mixins.html\r\n ********************************************************************************/\r\n\r\n/** @internal called to add drag over to support widgets being added externally */\r\nGridStack.prototype._setupAcceptWidget = function(this: GridStack): GridStack {\r\n\r\n // check if we need to disable things\r\n if (this.opts.staticGrid || (!this.opts.acceptWidgets && !this.opts.removable)) {\r\n GridStackDD.get().droppable(this.el, 'destroy');\r\n return this;\r\n }\r\n\r\n // vars shared across all methods\r\n let cellHeight: number, cellWidth: number;\r\n\r\n let onDrag = (event: DragEvent, el: GridItemHTMLElement, helper: GridItemHTMLElement) => {\r\n let node = el.gridstackNode;\r\n if (!node) return;\r\n\r\n helper = helper || el;\r\n let parent = this.el.getBoundingClientRect();\r\n let {top, left} = helper.getBoundingClientRect();\r\n left -= parent.left;\r\n top -= parent.top;\r\n let ui: DDUIData = {position: {top, left}};\r\n\r\n if (node._temporaryRemoved) {\r\n node.x = Math.max(0, Math.round(left / cellWidth));\r\n node.y = Math.max(0, Math.round(top / cellHeight));\r\n delete node.autoPosition;\r\n this.engine.nodeBoundFix(node);\r\n\r\n // don't accept *initial* location if doesn't fit #1419 (locked drop region, or can't grow), but maybe try if it will go somewhere\r\n if (!this.engine.willItFit(node)) {\r\n node.autoPosition = true; // ignore x,y and try for any slot...\r\n if (!this.engine.willItFit(node)) {\r\n GridStackDD.get().off(el, 'drag'); // stop calling us\r\n return; // full grid or can't grow\r\n }\r\n if (node._willFitPos) {\r\n // use the auto position instead #1687\r\n Utils.copyPos(node, node._willFitPos);\r\n delete node._willFitPos;\r\n }\r\n }\r\n\r\n // re-use the existing node dragging method\r\n this._onStartMoving(helper, event, ui, node, cellWidth, cellHeight);\r\n } else {\r\n // re-use the existing node dragging that does so much of the collision detection\r\n this._dragOrResize(helper, event, ui, node, cellWidth, cellHeight);\r\n }\r\n }\r\n\r\n GridStackDD.get()\r\n .droppable(this.el, {\r\n accept: (el: GridItemHTMLElement) => {\r\n let node: GridStackNode = el.gridstackNode;\r\n // set accept drop to true on ourself (which we ignore) so we don't get \"can't drop\" icon in HTML5 mode while moving\r\n if (node?.grid === this) return true;\r\n if (!this.opts.acceptWidgets) return false;\r\n // prevent deeper nesting until rest of 992 can be fixed\r\n if (node?.subGrid) return false;\r\n // check for accept method or class matching\r\n let canAccept = true;\r\n if (typeof this.opts.acceptWidgets === 'function') {\r\n canAccept = this.opts.acceptWidgets(el);\r\n } else {\r\n let selector = (this.opts.acceptWidgets === true ? '.grid-stack-item' : this.opts.acceptWidgets as string);\r\n canAccept = el.matches(selector);\r\n }\r\n // finally check to make sure we actually have space left #1571\r\n if (canAccept && node && this.opts.maxRow) {\r\n let n = {w: node.w, h: node.h, minW: node.minW, minH: node.minH}; // only width/height matters and autoPosition\r\n canAccept = this.engine.willItFit(n);\r\n }\r\n return canAccept;\r\n }\r\n })\r\n /**\r\n * entering our grid area\r\n */\r\n .on(this.el, 'dropover', (event: Event, el: GridItemHTMLElement, helper: GridItemHTMLElement) => {\r\n // TEST console.log(`over ${this.el.gridstack.opts.id} ${count++}`);\r\n let node = el.gridstackNode;\r\n // ignore drop enter on ourself (unless we temporarily removed) which happens on a simple drag of our item\r\n if (node?.grid === this && !node._temporaryRemoved) {\r\n // delete node._added; // reset this to track placeholder again in case we were over other grid #1484 (dropout doesn't always clear)\r\n return false; // prevent parent from receiving msg (which may be a grid as well)\r\n }\r\n\r\n // fix #1578 when dragging fast, we may not get a leave on the previous grid so force one now\r\n if (node?.grid && node.grid !== this && !node._temporaryRemoved) {\r\n // TEST console.log('dropover without leave');\r\n let otherGrid = node.grid;\r\n otherGrid._leave(el, helper);\r\n }\r\n\r\n // cache cell dimensions (which don't change), position can animate if we removed an item in otherGrid that affects us...\r\n cellWidth = this.cellWidth();\r\n cellHeight = this.getCellHeight(true);\r\n\r\n // load any element attributes if we don't have a node\r\n if (!node) {// @ts-ignore private read only on ourself\r\n node = this._readAttr(el);\r\n }\r\n if (!node.grid) {\r\n node._isExternal = true;\r\n el.gridstackNode = node;\r\n }\r\n\r\n // calculate the grid size based on element outer size\r\n helper = helper || el;\r\n let w = node.w || Math.round(helper.offsetWidth / cellWidth) || 1;\r\n let h = node.h || Math.round(helper.offsetHeight / cellHeight) || 1;\r\n\r\n // if the item came from another grid, make a copy and save the original info in case we go back there\r\n if (node.grid && node.grid !== this) {\r\n // copy the node original values (min/max/id/etc...) but override width/height/other flags which are this grid specific\r\n // TEST console.log('dropover cloning node');\r\n if (!el._gridstackNodeOrig) el._gridstackNodeOrig = node; // shouldn't have multiple nested!\r\n el.gridstackNode = node = {...node, w, h, grid: this};\r\n this.engine.cleanupNode(node)\r\n .nodeBoundFix(node);\r\n // restore some internal fields we need after clearing them all\r\n node._initDD =\r\n node._isExternal = // DOM needs to be re-parented on a drop\r\n node._temporaryRemoved = true; // so it can be inserted onDrag below\r\n } else {\r\n node.w = w; node.h = h;\r\n node._temporaryRemoved = true; // so we can insert it\r\n }\r\n\r\n // clear any marked for complete removal (Note: don't check _isAboutToRemove as that is cleared above - just do it)\r\n _itemRemoving(node.el, false);\r\n\r\n GridStackDD.get().on(el, 'drag', onDrag);\r\n // make sure this is called at least once when going fast #1578\r\n onDrag(event as DragEvent, el, helper);\r\n return false; // prevent parent from receiving msg (which may be a grid as well)\r\n })\r\n /**\r\n * Leaving our grid area...\r\n */\r\n .on(this.el, 'dropout', (event, el: GridItemHTMLElement, helper: GridItemHTMLElement) => {\r\n // TEST console.log(`out ${this.el.gridstack.opts.id} ${count++}`);\r\n let node = el.gridstackNode;\r\n if (!node) return false;\r\n // fix #1578 when dragging fast, we might get leave after other grid gets enter (which calls us to clean)\r\n // so skip this one if we're not the active grid really..\r\n if (!node.grid || node.grid === this) {\r\n this._leave(el, helper);\r\n }\r\n return false; // prevent parent from receiving msg (which may be grid as well)\r\n })\r\n /**\r\n * end - releasing the mouse\r\n */\r\n .on(this.el, 'drop', (event, el: GridItemHTMLElement, helper: GridItemHTMLElement) => {\r\n let node = el.gridstackNode;\r\n // ignore drop on ourself from ourself that didn't come from the outside - dragend will handle the simple move instead\r\n if (node?.grid === this && !node._isExternal) return false;\r\n\r\n let wasAdded = !!this.placeholder.parentElement; // skip items not actually added to us because of constrains, but do cleanup #1419\r\n this.placeholder.remove();\r\n\r\n // notify previous grid of removal\r\n // TEST console.log('drop delete _gridstackNodeOrig')\r\n let origNode = el._gridstackNodeOrig;\r\n delete el._gridstackNodeOrig;\r\n if (wasAdded && origNode && origNode.grid && origNode.grid !== this) {\r\n let oGrid = origNode.grid;\r\n oGrid.engine.removedNodes.push(origNode);\r\n oGrid._triggerRemoveEvent();\r\n }\r\n\r\n if (!node) return false;\r\n\r\n // use existing placeholder node as it's already in our list with drop location\r\n if (wasAdded) {\r\n this.engine.cleanupNode(node); // removes all internal _xyz values\r\n node.grid = this;\r\n }\r\n GridStackDD.get().off(el, 'drag');\r\n // if we made a copy ('helper' which is temp) of the original node then insert a copy, else we move the original node (#1102)\r\n // as the helper will be nuked by jquery-ui otherwise\r\n if (helper !== el) {\r\n helper.remove();\r\n el.gridstackNode = origNode; // original item (left behind) is re-stored to pre dragging as the node now has drop info\r\n if (wasAdded) {\r\n el = el.cloneNode(true) as GridItemHTMLElement;\r\n }\r\n } else {\r\n el.remove(); // reduce flicker as we change depth here, and size further down\r\n GridStackDD.get().remove(el);\r\n }\r\n if (!wasAdded) return false;\r\n el.gridstackNode = node;\r\n node.el = el;\r\n // @ts-ignore\r\n Utils.copyPos(node, this._readAttr(this.placeholder)); // placeholder values as moving VERY fast can throw things off #1578\r\n Utils.removePositioningStyles(el);// @ts-ignore\r\n this._writeAttr(el, node);\r\n this.el.appendChild(el);// @ts-ignore\r\n this._updateContainerHeight();\r\n this.engine.addedNodes.push(node);// @ts-ignore\r\n this._triggerAddEvent();// @ts-ignore\r\n this._triggerChangeEvent();\r\n\r\n this.engine.endUpdate();\r\n if (this._gsEventHandler['dropped']) {\r\n this._gsEventHandler['dropped']({...event, type: 'dropped'}, origNode && origNode.grid ? origNode : undefined, node);\r\n }\r\n\r\n // wait till we return out of the drag callback to set the new drag&resize handler or they may get messed up\r\n window.setTimeout(() => {\r\n // IFF we are still there (some application will use as placeholder and insert their real widget instead and better call makeWidget())\r\n if (node.el && node.el.parentElement) {\r\n this._prepareDragDropByNode(node);\r\n } else {\r\n this.engine.removeNode(node);\r\n }\r\n });\r\n\r\n return false; // prevent parent from receiving msg (which may be grid as well)\r\n });\r\n return this;\r\n}\r\n\r\n/** @internal mark item for removal */\r\nfunction _itemRemoving(el: GridItemHTMLElement, remove: boolean) {\r\n let node = el ? el.gridstackNode : undefined;\r\n if (!node || !node.grid) return;\r\n remove ? node._isAboutToRemove = true : delete node._isAboutToRemove;\r\n remove ? el.classList.add('grid-stack-item-removing') : el.classList.remove('grid-stack-item-removing');\r\n}\r\n\r\n/** @internal called to setup a trash drop zone if the user specifies it */\r\nGridStack.prototype._setupRemoveDrop = function(this: GridStack): GridStack {\r\n if (!this.opts.staticGrid && typeof this.opts.removable === 'string') {\r\n let trashEl = document.querySelector(this.opts.removable) as HTMLElement;\r\n if (!trashEl) return this;\r\n // only register ONE drop-over/dropout callback for the 'trash', and it will\r\n // update the passed in item and parent grid because the 'trash' is a shared resource anyway,\r\n // and Native DD only has 1 event CB (having a list and technically a per grid removableOptions complicates things greatly)\r\n if (!GridStackDD.get().isDroppable(trashEl)) {\r\n GridStackDD.get().droppable(trashEl, this.opts.removableOptions)\r\n .on(trashEl, 'dropover', (event, el) => _itemRemoving(el, true))\r\n .on(trashEl, 'dropout', (event, el) => _itemRemoving(el, false));\r\n }\r\n }\r\n return this;\r\n}\r\n\r\n/**\r\n * call to setup dragging in from the outside (say toolbar), by specifying the class selection and options.\r\n * Called during GridStack.init() as options, but can also be called directly (last param are cached) in case the toolbar\r\n * is dynamically create and needs to change later.\r\n **/\r\nGridStack.setupDragIn = function(this: GridStack, _dragIn?: string, _dragInOptions?: DDDragInOpt) {\r\n let dragIn: string;\r\n let dragInOptions: DDDragInOpt;\r\n const dragInDefaultOptions: DDDragInOpt = {\r\n revert: 'invalid',\r\n handle: '.grid-stack-item-content',\r\n scroll: false,\r\n appendTo: 'body'\r\n };\r\n\r\n // cache in the passed in values (form grid init?) so they don't have to resend them each time\r\n if (_dragIn) {\r\n dragIn = _dragIn;\r\n dragInOptions = {...dragInDefaultOptions, ...(_dragInOptions || {})};\r\n }\r\n if (typeof dragIn !== 'string') return;\r\n let dd = GridStackDD.get();\r\n Utils.getElements(dragIn).forEach(el => {\r\n if (!dd.isDraggable(el)) dd.dragIn(el, dragInOptions);\r\n });\r\n}\r\n\r\n/** @internal prepares the element for drag&drop **/\r\nGridStack.prototype._prepareDragDropByNode = function(this: GridStack, node: GridStackNode): GridStack {\r\n let el = node.el;\r\n let dd = GridStackDD.get();\r\n\r\n // check for disabled grid first\r\n if (this.opts.staticGrid || ((node.noMove || this.opts.disableDrag) && (node.noResize || this.opts.disableResize))) {\r\n if (node._initDD) {\r\n dd.remove(el); // nukes everything instead of just disable, will add some styles back next\r\n delete node._initDD;\r\n }\r\n el.classList.add('ui-draggable-disabled', 'ui-resizable-disabled'); // add styles one might depend on #1435\r\n return this;\r\n }\r\n\r\n if (!node._initDD) {\r\n // variables used/cashed between the 3 start/move/end methods, in addition to node passed above\r\n let cellWidth: number;\r\n let cellHeight: number;\r\n\r\n /** called when item starts moving/resizing */\r\n let onStartMoving = (event: Event, ui: DDUIData) => {\r\n // trigger any 'dragstart' / 'resizestart' manually\r\n if (this._gsEventHandler[event.type]) {\r\n this._gsEventHandler[event.type](event, event.target);\r\n }\r\n cellWidth = this.cellWidth();\r\n cellHeight = this.getCellHeight(true); // force pixels for calculations\r\n\r\n this._onStartMoving(el, event, ui, node, cellWidth, cellHeight);\r\n }\r\n\r\n /** called when item is being dragged/resized */\r\n let dragOrResize = (event: Event, ui: DDUIData) => {\r\n this._dragOrResize(el, event, ui, node, cellWidth, cellHeight);\r\n }\r\n\r\n /** called when the item stops moving/resizing */\r\n let onEndMoving = (event: Event) => {\r\n this.placeholder.remove();\r\n delete node._moving;\r\n delete node._lastTried;\r\n\r\n // if the item has moved to another grid, we're done here\r\n let target: GridItemHTMLElement = event.target as GridItemHTMLElement;\r\n if (!target.gridstackNode || target.gridstackNode.grid !== this) return;\r\n\r\n node.el = target;\r\n\r\n if (node._isAboutToRemove) {\r\n let gridToNotify = el.gridstackNode.grid;\r\n if (gridToNotify._gsEventHandler[event.type]) {\r\n gridToNotify._gsEventHandler[event.type](event, target);\r\n }\r\n dd.remove(el);\r\n gridToNotify.engine.removedNodes.push(node);\r\n gridToNotify._triggerRemoveEvent();\r\n // break circular links and remove DOM\r\n delete el.gridstackNode;\r\n delete node.el;\r\n el.remove();\r\n } else {\r\n if (!node._temporaryRemoved) {\r\n // move to new placeholder location\r\n Utils.removePositioningStyles(target);// @ts-ignore\r\n this._writePosAttr(target, node);\r\n } else {\r\n // got removed - restore item back to before dragging position\r\n Utils.removePositioningStyles(target);\r\n Utils.copyPos(node, node._orig);// @ts-ignore\r\n this._writePosAttr(target, node);\r\n this.engine.addNode(node);\r\n }\r\n if (this._gsEventHandler[event.type]) {\r\n this._gsEventHandler[event.type](event, target);\r\n }\r\n }\r\n // @ts-ignore\r\n this._extraDragRow = 0;// @ts-ignore\r\n this._updateContainerHeight();// @ts-ignore\r\n this._triggerChangeEvent();\r\n\r\n this.engine.endUpdate();\r\n }\r\n\r\n dd.draggable(el, {\r\n start: onStartMoving,\r\n stop: onEndMoving,\r\n drag: dragOrResize\r\n }).resizable(el, {\r\n start: onStartMoving,\r\n stop: onEndMoving,\r\n resize: dragOrResize\r\n });\r\n node._initDD = true; // we've set DD support now\r\n }\r\n\r\n // finally fine tune move vs resize by disabling any part...\r\n if (node.noMove || this.opts.disableDrag) {\r\n dd.draggable(el, 'disable');\r\n el.classList.add('ui-draggable-disabled');\r\n } else {\r\n dd.draggable(el, 'enable');\r\n el.classList.remove('ui-draggable-disabled');\r\n }\r\n if (node.noResize || this.opts.disableResize) {\r\n dd.resizable(el, 'disable');\r\n el.classList.add('ui-resizable-disabled');\r\n } else {\r\n dd.resizable(el, 'enable');\r\n el.classList.remove('ui-resizable-disabled');\r\n }\r\n\r\n return this;\r\n}\r\n\r\n/** @internal called when item is starting a drag/resize */\r\nGridStack.prototype._onStartMoving = function(this: GridStack, el: GridItemHTMLElement, event: Event, ui: DDUIData, node: GridStackNode, cellWidth: number, cellHeight: number) {\r\n this.engine.cleanNodes()\r\n .beginUpdate(node);\r\n // @ts-ignore\r\n this._writePosAttr(this.placeholder, node)\r\n this.el.appendChild(this.placeholder);\r\n // TEST console.log('_onStartMoving placeholder')\r\n\r\n node.el = this.placeholder;\r\n node._lastUiPosition = ui.position;\r\n node._prevYPix = ui.position.top;\r\n node._moving = (event.type === 'dragstart'); // 'dropover' are not initially moving so they can go exactly where they enter (will push stuff out of the way)\r\n delete node._lastTried;\r\n\r\n if (event.type === 'dropover' && node._temporaryRemoved) {\r\n // TEST console.log('engine.addNode x=' + node.x);\r\n this.engine.addNode(node); // will add, fix collisions, update attr and clear _temporaryRemoved\r\n node._moving = true; // AFTER, mark as moving object (wanted fix location before)\r\n }\r\n\r\n // set the min/max resize info\r\n this.engine.cacheRects(cellWidth, cellHeight, this.opts.marginTop as number, this.opts.marginRight as number, this.opts.marginBottom as number, this.opts.marginLeft as number);\r\n if (event.type === 'resizestart') {\r\n let dd = GridStackDD.get()\r\n .resizable(el, 'option', 'minWidth', cellWidth * (node.minW || 1))\r\n .resizable(el, 'option', 'minHeight', cellHeight * (node.minH || 1));\r\n if (node.maxW) { dd.resizable(el, 'option', 'maxWidth', cellWidth * node.maxW); }\r\n if (node.maxH) { dd.resizable(el, 'option', 'maxHeight', cellHeight * node.maxH); }\r\n }\r\n}\r\n\r\n/** @internal called when item leaving our area by either cursor dropout event\r\n * or shape is outside our boundaries. remove it from us, and mark temporary if this was\r\n * our item to start with else restore prev node values from prev grid it came from.\r\n **/\r\nGridStack.prototype._leave = function(this: GridStack, el: GridItemHTMLElement, helper?: GridItemHTMLElement) {\r\n let node = el.gridstackNode;\r\n if (!node) return;\r\n\r\n GridStackDD.get().off(el, 'drag'); // no need to track while being outside\r\n\r\n // this gets called when cursor leaves and shape is outside, so only do this once\r\n if (node._temporaryRemoved) return;\r\n node._temporaryRemoved = true;\r\n\r\n this.engine.removeNode(node); // remove placeholder as well, otherwise it's a sign node is not in our list, which is a bigger issue\r\n node.el = node._isExternal && helper ? helper : el; // point back to real item being dragged\r\n\r\n if (this.opts.removable === true) { // boolean vs a class string\r\n // item leaving us and we are supposed to remove on leave (no need to drag onto trash) mark it so\r\n _itemRemoving(el, true);\r\n }\r\n\r\n // finally if item originally came from another grid, but left us, restore things back to prev info\r\n if (el._gridstackNodeOrig) {\r\n // TEST console.log('leave delete _gridstackNodeOrig')\r\n el.gridstackNode = el._gridstackNodeOrig;\r\n delete el._gridstackNodeOrig;\r\n } else if (node._isExternal) {\r\n // item came from outside (like a toolbar) so nuke any node info\r\n delete node.el;\r\n delete el.gridstackNode;\r\n // and restore all nodes back to original\r\n this.engine.restoreInitial();\r\n }\r\n}\r\n\r\n/** @internal called when item is being dragged/resized */\r\nGridStack.prototype._dragOrResize = function(this: GridStack, el: GridItemHTMLElement, event: Event, ui: DDUIData, node: GridStackNode, cellWidth: number, cellHeight: number) {\r\n let p = {...node._orig}; // could be undefined (_isExternal) which is ok (drag only set x,y and w,h will default to node value)\r\n let resizing: boolean;\r\n let mLeft = this.opts.marginLeft as number,\r\n mRight = this.opts.marginRight as number,\r\n mTop = this.opts.marginTop as number,\r\n mBottom = this.opts.marginBottom as number;\r\n\r\n // if margins (which are used to pass mid point by) are large relative to cell height/width, reduce them down #1855\r\n let mHeight = Math.round(cellHeight * 0.1),\r\n mWidth = Math.round(cellWidth * 0.1);\r\n mLeft = Math.min(mLeft, mWidth);\r\n mRight = Math.min(mRight, mWidth);\r\n mTop = Math.min(mTop, mHeight);\r\n mBottom = Math.min(mBottom, mHeight);\r\n\r\n if (event.type === 'drag') {\r\n if (node._temporaryRemoved) return; // handled by dropover\r\n let distance = ui.position.top - node._prevYPix;\r\n node._prevYPix = ui.position.top;\r\n Utils.updateScrollPosition(el, ui.position, distance);\r\n\r\n // get new position taking into account the margin in the direction we are moving! (need to pass mid point by margin)\r\n let left = ui.position.left + (ui.position.left > node._lastUiPosition.left ? -mRight : mLeft);\r\n let top = ui.position.top + (ui.position.top > node._lastUiPosition.top ? -mBottom : mTop);\r\n p.x = Math.round(left / cellWidth);\r\n p.y = Math.round(top / cellHeight);\r\n\r\n // @ts-ignore// if we're at the bottom hitting something else, grow the grid so cursor doesn't leave when trying to place below others\r\n let prev = this._extraDragRow;\r\n if (this.engine.collide(node, p)) {\r\n let row = this.getRow();\r\n let extra = Math.max(0, (p.y + node.h) - row);\r\n if (this.opts.maxRow && row + extra > this.opts.maxRow) {\r\n extra = Math.max(0, this.opts.maxRow - row);\r\n }// @ts-ignore\r\n this._extraDragRow = extra;// @ts-ignore\r\n } else this._extraDragRow = 0;// @ts-ignore\r\n if (this._extraDragRow !== prev) this._updateContainerHeight();\r\n\r\n if (node.x === p.x && node.y === p.y) return; // skip same\r\n // DON'T skip one we tried as we might have failed because of coverage <50% before\r\n // if (node._lastTried && node._lastTried.x === x && node._lastTried.y === y) return;\r\n } else if (event.type === 'resize') {\r\n if (p.x < 0) return;\r\n // Scrolling page if needed\r\n Utils.updateScrollResize(event as MouseEvent, el, cellHeight);\r\n\r\n // get new size\r\n p.w = Math.round((ui.size.width - mLeft) / cellWidth);\r\n p.h = Math.round((ui.size.height - mTop) / cellHeight);\r\n if (node.w === p.w && node.h === p.h) return;\r\n if (node._lastTried && node._lastTried.w === p.w && node._lastTried.h === p.h) return; // skip one we tried (but failed)\r\n\r\n // if we size on left/top side this might move us, so get possible new position as well\r\n let left = ui.position.left + mLeft;\r\n let top = ui.position.top + mTop;\r\n p.x = Math.round(left / cellWidth);\r\n p.y = Math.round(top / cellHeight);\r\n\r\n resizing = true;\r\n }\r\n\r\n node._lastTried = p; // set as last tried (will nuke if we go there)\r\n let rect: GridStackPosition = { // screen pix of the dragged box\r\n x: ui.position.left + mLeft,\r\n y: ui.position.top + mTop,\r\n w: (ui.size ? ui.size.width : node.w * cellWidth) - mLeft - mRight,\r\n h: (ui.size ? ui.size.height : node.h * cellHeight) - mTop - mBottom\r\n };\r\n if (this.engine.moveNodeCheck(node, {...p, cellWidth, cellHeight, rect, resizing})) {\r\n node._lastUiPosition = ui.position;\r\n this.engine.cacheRects(cellWidth, cellHeight, mTop, mRight, mBottom, mLeft);\r\n delete node._skipDown;\r\n if (resizing && node.subGrid) { (node.subGrid as GridStack).onParentResize(); }// @ts-ignore\r\n this._extraDragRow = 0;// @ts-ignore\r\n this._updateContainerHeight();\r\n\r\n let target = event.target as GridItemHTMLElement;// @ts-ignore\r\n this._writePosAttr(target, node);\r\n if (this._gsEventHandler[event.type]) {\r\n this._gsEventHandler[event.type](event, target);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Enables/Disables moving.\r\n * @param els widget or selector to modify.\r\n * @param val if true widget will be draggable.\r\n */\r\nGridStack.prototype.movable = function(this: GridStack, els: GridStackElement, val: boolean): GridStack {\r\n if (this.opts.staticGrid) return this; // can't move a static grid!\r\n GridStack.getElements(els).forEach(el => {\r\n let node = el.gridstackNode;\r\n if (!node) return;\r\n if (val) delete node.noMove; else node.noMove = true;\r\n this._prepareDragDropByNode(node); // init DD if need be, and adjust\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * Enables/Disables resizing.\r\n * @param els widget or selector to modify\r\n * @param val if true widget will be resizable.\r\n */\r\nGridStack.prototype.resizable = function(this: GridStack, els: GridStackElement, val: boolean): GridStack {\r\n if (this.opts.staticGrid) return this; // can't resize a static grid!\r\n GridStack.getElements(els).forEach(el => {\r\n let node = el.gridstackNode;\r\n if (!node) return;\r\n if (val) delete node.noResize; else node.noResize = true;\r\n this._prepareDragDropByNode(node); // init DD if need be, and adjust\r\n });\r\n return this;\r\n}\r\n\r\n\r\n/**\r\n * Temporarily disables widgets moving/resizing.\r\n * If you want a more permanent way (which freezes up resources) use `setStatic(true)` instead.\r\n * Note: no-op for static grid\r\n * This is a shortcut for:\r\n * @example\r\n * grid.enableMove(false);\r\n * grid.enableResize(false);\r\n */\r\nGridStack.prototype.disable = function(this: GridStack): GridStack {\r\n if (this.opts.staticGrid) return;\r\n this.enableMove(false);\r\n this.enableResize(false);// @ts-ignore\r\n this._triggerEvent('disable');\r\n return this;\r\n}\r\n\r\n/**\r\n * Re-enables widgets moving/resizing - see disable().\r\n * Note: no-op for static grid.\r\n * This is a shortcut for:\r\n * @example\r\n * grid.enableMove(true);\r\n * grid.enableResize(true);\r\n */\r\nGridStack.prototype.enable = function(this: GridStack): GridStack {\r\n if (this.opts.staticGrid) return;\r\n this.enableMove(true);\r\n this.enableResize(true);// @ts-ignore\r\n this._triggerEvent('enable');\r\n return this;\r\n}\r\n\r\n/** Enables/disables widget moving. No-op for static grids. */\r\nGridStack.prototype.enableMove = function(this: GridStack, doEnable: boolean): GridStack {\r\n if (this.opts.staticGrid) return this; // can't move a static grid!\r\n this.opts.disableDrag = !doEnable; // FIRST before we update children as grid overrides #1658\r\n this.engine.nodes.forEach(n => this.movable(n.el, doEnable));\r\n return this;\r\n}\r\n\r\n/** Enables/disables widget resizing. No-op for static grids. */\r\nGridStack.prototype.enableResize = function(this: GridStack, doEnable: boolean): GridStack {\r\n if (this.opts.staticGrid) return this; // can't size a static grid!\r\n this.opts.disableResize = !doEnable; // FIRST before we update children as grid overrides #1658\r\n this.engine.nodes.forEach(n => this.resizable(n.el, doEnable));\r\n return this;\r\n}\r\n","/**\r\n * gridstack-ddi.ts 5.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { GridItemHTMLElement } from './types';\r\n\r\n/**\r\n * Abstract Partial Interface API for drag'n'drop plugin - look at GridStackDD and HTML5 / Jquery implementation versions\r\n */\r\nexport class GridStackDDI {\r\n\r\n protected static ddi: GridStackDDI;\r\n\r\n /** call this method to register your plugin instead of the default no-op one */\r\n static registerPlugin(pluginClass: typeof GridStackDDI): GridStackDDI {\r\n GridStackDDI.ddi = new pluginClass();\r\n return GridStackDDI.ddi;\r\n }\r\n\r\n /** get the current registered plugin to use */\r\n static get(): GridStackDDI {\r\n return GridStackDDI.ddi || GridStackDDI.registerPlugin(GridStackDDI);\r\n }\r\n\r\n /** removes any drag&drop present (called during destroy) */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n public remove(el: GridItemHTMLElement): GridStackDDI {\r\n return this; // no-op for static grids\r\n }\r\n}\r\n","/**\n * gridstack-engine.ts 5.0\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\n */\n\nimport { Utils } from './utils';\nimport { GridStackNode, ColumnOptions, GridStackPosition, GridStackMoveOpts } from './types';\n\nexport type onChangeCB = (nodes: GridStackNode[], removeDOM?: boolean) => void;\n/** options used for creations - similar to GridStackOptions */\nexport interface GridStackEngineOptions {\n column?: number;\n maxRow?: number;\n float?: boolean;\n nodes?: GridStackNode[];\n onChange?: onChangeCB;\n}\n\n/**\n * Defines the GridStack engine that does most no DOM grid manipulation.\n * See GridStack methods and vars for descriptions.\n *\n * NOTE: values should not be modified directly - call the main GridStack API instead\n */\nexport class GridStackEngine {\n public column: number;\n public maxRow: number;\n public nodes: GridStackNode[];\n public onChange: onChangeCB;\n public addedNodes: GridStackNode[] = [];\n public removedNodes: GridStackNode[] = [];\n public batchMode: boolean;\n /** @internal */\n private _float: boolean;\n /** @internal */\n private _prevFloat: boolean;\n /** @internal cached layouts of difference column count so we can restore ack (eg 12 -> 1 -> 12) */\n private _layouts?: Layout[][]; // maps column # to array of values nodes\n /** @internal true while we are resizing widgets during column resize to skip certain parts */\n private _inColumnResize: boolean;\n /** @internal true if we have some items locked */\n private _hasLocked: boolean;\n /** @internal unique global internal _id counter NOT starting at 0 */\n private static _idSeq = 1;\n\n public constructor(opts: GridStackEngineOptions = {}) {\n this.column = opts.column || 12;\n this.onChange = opts.onChange;\n this._float = opts.float;\n this.maxRow = opts.maxRow;\n this.nodes = opts.nodes || [];\n }\n\n public batchUpdate(): GridStackEngine {\n if (this.batchMode) return this;\n this.batchMode = true;\n this._prevFloat = this._float;\n this._float = true; // let things go anywhere for now... commit() will restore and possibly reposition\n this.saveInitial(); // since begin update (which is called multiple times) won't do this\n return this;\n }\n\n public commit(): GridStackEngine {\n if (!this.batchMode) return this;\n this.batchMode = false;\n this._float = this._prevFloat;\n delete this._prevFloat;\n return this._packNodes()\n ._notify();\n }\n\n // use entire row for hitting area (will use bottom reverse sorted first) if we not actively moving DOWN and didn't already skip\n private _useEntireRowArea(node: GridStackNode, nn: GridStackPosition): boolean {\n return !this.float && !this._hasLocked && (!node._moving || node._skipDown || nn.y <= node.y);\n }\n\n /** @internal fix collision on given 'node', going to given new location 'nn', with optional 'collide' node already found.\n * return true if we moved. */\n private _fixCollisions(node: GridStackNode, nn = node, collide?: GridStackNode, opt: GridStackMoveOpts = {}): boolean {\n this._sortNodes(-1); // from last to first, so recursive collision move items in the right order\n\n collide = collide || this.collide(node, nn); // REAL area collide for swap and skip if none...\n if (!collide) return false;\n\n // swap check: if we're actively moving in gravity mode, see if we collide with an object the same size\n if (node._moving && !opt.nested && !this.float) {\n if (this.swap(node, collide)) return true;\n }\n\n // during while() collisions MAKE SURE to check entire row so larger items don't leap frog small ones (push them all down starting last in grid)\n let area = nn;\n if (this._useEntireRowArea(node, nn)) {\n area = {x: 0, w: this.column, y: nn.y, h: nn.h};\n collide = this.collide(node, area, opt.skip); // force new hit\n }\n\n let didMove = false;\n let newOpt: GridStackMoveOpts = {nested: true, pack: false};\n while (collide = collide || this.collide(node, area, opt.skip)) { // could collide with more than 1 item... so repeat for each\n let moved: boolean;\n // if colliding with a locked item OR moving down with top gravity (and collide could move up) -> skip past the collide,\n // but remember that skip down so we only do this once (and push others otherwise).\n if (collide.locked || node._moving && !node._skipDown && nn.y > node.y && !this.float &&\n // can take space we had, or before where we're going\n (!this.collide(collide, {...collide, y: node.y}, node) || !this.collide(collide, {...collide, y: nn.y - collide.h}, node))) {\n node._skipDown = (node._skipDown || nn.y > node.y);\n moved = this.moveNode(node, {...nn, y: collide.y + collide.h, ...newOpt});\n if (collide.locked && moved) {\n Utils.copyPos(nn, node); // moving after lock become our new desired location\n } else if (!collide.locked && moved && opt.pack) {\n // we moved after and will pack: do it now and keep the original drop location, but past the old collide to see what else we might push way\n this._packNodes();\n nn.y = collide.y + collide.h;\n Utils.copyPos(node, nn);\n }\n didMove = didMove || moved;\n } else {\n // move collide down *after* where we will be, ignoring where we are now (don't collide with us)\n moved = this.moveNode(collide, {...collide, y: nn.y + nn.h, skip: node, ...newOpt});\n }\n if (!moved) { return didMove; } // break inf loop if we couldn't move after all (ex: maxRow, fixed)\n collide = undefined;\n }\n return didMove;\n }\n\n /** return the nodes that intercept the given node. Optionally a different area can be used, as well as a second node to skip */\n public collide(skip: GridStackNode, area = skip, skip2?: GridStackNode): GridStackNode {\n return this.nodes.find(n => n !== skip && n !== skip2 && Utils.isIntercepted(n, area));\n }\n public collideAll(skip: GridStackNode, area = skip, skip2?: GridStackNode): GridStackNode[] {\n return this.nodes.filter(n => n !== skip && n !== skip2 && Utils.isIntercepted(n, area));\n }\n\n /** does a pixel coverage collision, returning the node that has the most coverage that is >50% mid line */\n public collideCoverage(node: GridStackNode, o: GridStackMoveOpts, collides: GridStackNode[]): GridStackNode {\n if (!o.rect || !node._rect) return;\n let r0 = node._rect; // where started\n let r = {...o.rect}; // where we are\n\n // update dragged rect to show where it's coming from (above or below, etc...)\n if (r.y > r0.y) {\n r.h += r.y - r0.y;\n r.y = r0.y;\n } else {\n r.h += r0.y - r.y;\n }\n if (r.x > r0.x) {\n r.w += r.x - r0.x;\n r.x = r0.x;\n } else {\n r.w += r0.x - r.x;\n }\n\n let collide: GridStackNode;\n collides.forEach(n => {\n if (n.locked || !n._rect) return;\n let r2 = n._rect; // overlapping target\n let yOver = Number.MAX_VALUE, xOver = Number.MAX_VALUE, overMax = 0.5; // need >50%\n // depending on which side we started from, compute the overlap % of coverage\n // (ex: from above/below we only compute the max horizontal line coverage)\n if (r0.y < r2.y) { // from above\n yOver = ((r.y + r.h) - r2.y) / r2.h;\n } else if (r0.y+r0.h > r2.y+r2.h) { // from below\n yOver = ((r2.y + r2.h) - r.y) / r2.h;\n }\n if (r0.x < r2.x) { // from the left\n xOver = ((r.x + r.w) - r2.x) / r2.w;\n } else if (r0.x+r0.w > r2.x+r2.w) { // from the right\n xOver = ((r2.x + r2.w) - r.x) / r2.w;\n }\n let over = Math.min(xOver, yOver);\n if (over > overMax) {\n overMax = over;\n collide = n;\n }\n });\n return collide;\n }\n\n /** called to cache the nodes pixel rectangles used for collision detection during drag */\n public cacheRects(w: number, h: number, top: number, right: number, bottom: number, left: number): GridStackEngine\n {\n this.nodes.forEach(n =>\n n._rect = {\n y: n.y * h + top,\n x: n.x * w + left,\n w: n.w * w - left - right,\n h: n.h * h - top - bottom\n }\n );\n return this;\n }\n\n /** called to possibly swap between 2 nodes (same size or column, not locked, touching), returning true if successful */\n public swap(a: GridStackNode, b: GridStackNode): boolean {\n if (!b || b.locked || !a || a.locked) return false;\n\n function _doSwap(): true { // assumes a is before b IFF they have different height (put after rather than exact swap)\n let x = b.x, y = b.y;\n b.x = a.x; b.y = a.y; // b -> a position\n if (a.h != b.h) {\n a.x = x; a.y = b.y + b.h; // a -> goes after b\n } else if (a.w != b.w) {\n a.x = b.x + b.w; a.y = y; // a -> goes after b\n } else {\n a.x = x; a.y = y; // a -> old b position\n }\n a._dirty = b._dirty = true;\n return true;\n }\n let touching: boolean; // remember if we called it (vs undefined)\n\n // same size and same row or column, and touching\n if (a.w === b.w && a.h === b.h && (a.x === b.x || a.y === b.y) && (touching = Utils.isTouching(a, b)))\n return _doSwap();\n if (touching === false) return; // IFF ran test and fail, bail out\n\n // check for taking same columns (but different height) and touching\n if (a.w === b.w && a.x === b.x && (touching || (touching = Utils.isTouching(a, b)))) {\n if (b.y < a.y) { let t = a; a = b; b = t; } // swap a <-> b vars so a is first\n return _doSwap();\n }\n if (touching === false) return;\n\n // check if taking same row (but different width) and touching\n if (a.h === b.h && a.y === b.y && (touching || (touching = Utils.isTouching(a, b)))) {\n if (b.x < a.x) { let t = a; a = b; b = t; } // swap a <-> b vars so a is first\n return _doSwap();\n }\n return false;\n }\n\n public isAreaEmpty(x: number, y: number, w: number, h: number): boolean {\n let nn: GridStackNode = {x: x || 0, y: y || 0, w: w || 1, h: h || 1};\n return !this.collide(nn);\n }\n\n /** re-layout grid items to reclaim any empty space */\n public compact(): GridStackEngine {\n if (this.nodes.length === 0) return this;\n this.batchUpdate()\n ._sortNodes();\n let copyNodes = this.nodes;\n this.nodes = []; // pretend we have no nodes to conflict layout to start with...\n copyNodes.forEach(node => {\n if (!node.locked) {\n node.autoPosition = true;\n }\n this.addNode(node, false); // 'false' for add event trigger\n node._dirty = true; // will force attr update\n });\n return this.commit();\n }\n\n /** enable/disable floating widgets (default: `false`) See [example](http://gridstackjs.com/demo/float.html) */\n public set float(val: boolean) {\n if (this._float === val) return;\n this._float = val || false;\n if (!val) {\n this._packNodes()._notify();\n }\n }\n\n /** float getter method */\n public get float(): boolean { return this._float || false; }\n\n /** @internal */\n private _sortNodes(dir?: -1 | 1): GridStackEngine {\n this.nodes = Utils.sort(this.nodes, dir, this.column);\n return this;\n }\n\n /** @internal called to top gravity pack the items back OR revert back to original Y positions when floating */\n private _packNodes(): GridStackEngine {\n if (this.batchMode) { return this; }\n this._sortNodes(); // first to last\n\n if (this.float) {\n // restore original Y pos\n this.nodes.forEach(n => {\n if (n._updating || n._orig === undefined || n.y === n._orig.y) return;\n let newY = n.y;\n while (newY > n._orig.y) {\n --newY;\n let collide = this.collide(n, {x: n.x, y: newY, w: n.w, h: n.h});\n if (!collide) {\n n._dirty = true;\n n.y = newY;\n }\n }\n });\n } else {\n // top gravity pack\n this.nodes.forEach((n, i) => {\n if (n.locked) return;\n while (n.y > 0) {\n let newY = i === 0 ? 0 : n.y - 1;\n let canBeMoved = i === 0 || !this.collide(n, {x: n.x, y: newY, w: n.w, h: n.h});\n if (!canBeMoved) break;\n // Note: must be dirty (from last position) for GridStack::OnChange CB to update positions\n // and move items back. The user 'change' CB should detect changes from the original\n // starting position instead.\n n._dirty = (n.y !== newY);\n n.y = newY;\n }\n });\n }\n return this;\n }\n\n /**\n * given a random node, makes sure it's coordinates/values are valid in the current grid\n * @param node to adjust\n * @param resizing if out of bound, resize down or move into the grid to fit ?\n */\n public prepareNode(node: GridStackNode, resizing?: boolean): GridStackNode {\n node = node || {};\n node._id = node._id || GridStackEngine._idSeq++;\n\n // if we're missing position, have the grid position us automatically (before we set them to 0,0)\n if (node.x === undefined || node.y === undefined || node.x === null || node.y === null) {\n node.autoPosition = true;\n }\n\n // assign defaults for missing required fields\n let defaults: GridStackNode = { x: 0, y: 0, w: 1, h: 1};\n Utils.defaults(node, defaults);\n\n if (!node.autoPosition) { delete node.autoPosition; }\n if (!node.noResize) { delete node.noResize; }\n if (!node.noMove) { delete node.noMove; }\n\n // check for NaN (in case messed up strings were passed. can't do parseInt() || defaults.x above as 0 is valid #)\n if (typeof node.x == 'string') { node.x = Number(node.x); }\n if (typeof node.y == 'string') { node.y = Number(node.y); }\n if (typeof node.w == 'string') { node.w = Number(node.w); }\n if (typeof node.h == 'string') { node.h = Number(node.h); }\n if (isNaN(node.x)) { node.x = defaults.x; node.autoPosition = true; }\n if (isNaN(node.y)) { node.y = defaults.y; node.autoPosition = true; }\n if (isNaN(node.w)) { node.w = defaults.w; }\n if (isNaN(node.h)) { node.h = defaults.h; }\n\n return this.nodeBoundFix(node, resizing);\n }\n\n /** part2 of preparing a node to fit inside our grid - checks for x,y from grid dimensions */\n public nodeBoundFix(node: GridStackNode, resizing?: boolean): GridStackNode {\n\n let before = node._orig || Utils.copyPos({}, node);\n\n if (node.maxW) { node.w = Math.min(node.w, node.maxW); }\n if (node.maxH) { node.h = Math.min(node.h, node.maxH); }\n if (node.minW && node.minW <= this.column) { node.w = Math.max(node.w, node.minW); }\n if (node.minH) { node.h = Math.max(node.h, node.minH); }\n\n if (node.w > this.column) {\n // if user loaded a larger than allowed widget for current # of columns,\n // remember it's full width so we can restore back (1 -> 12 column) #1655\n // IFF we're not in the middle of column resizing!\n if (this.column < 12 && !this._inColumnResize) {\n node.w = Math.min(12, node.w);\n this.cacheOneLayout(node, 12);\n }\n node.w = this.column;\n } else if (node.w < 1) {\n node.w = 1;\n }\n\n if (this.maxRow && node.h > this.maxRow) {\n node.h = this.maxRow;\n } else if (node.h < 1) {\n node.h = 1;\n }\n\n if (node.x < 0) {\n node.x = 0;\n }\n if (node.y < 0) {\n node.y = 0;\n }\n\n if (node.x + node.w > this.column) {\n if (resizing) {\n node.w = this.column - node.x;\n } else {\n node.x = this.column - node.w;\n }\n }\n if (this.maxRow && node.y + node.h > this.maxRow) {\n if (resizing) {\n node.h = this.maxRow - node.y;\n } else {\n node.y = this.maxRow - node.h;\n }\n }\n\n if (!Utils.samePos(node, before)) {\n node._dirty = true;\n }\n\n return node;\n }\n\n public getDirtyNodes(verify?: boolean): GridStackNode[] {\n // compare original x,y,w,h instead as _dirty can be a temporary state\n if (verify) {\n return this.nodes.filter(n => n._dirty && !Utils.samePos(n, n._orig));\n }\n return this.nodes.filter(n => n._dirty);\n }\n\n /** @internal call this to call onChange CB with dirty nodes */\n private _notify(nodes?: GridStackNode | GridStackNode[], removeDOM = true): GridStackEngine {\n if (this.batchMode) return this;\n nodes = (nodes === undefined ? [] : (Array.isArray(nodes) ? nodes : [nodes]) );\n let dirtyNodes = nodes.concat(this.getDirtyNodes());\n this.onChange && this.onChange(dirtyNodes, removeDOM);\n return this;\n }\n\n /** @internal remove dirty and last tried info */\n public cleanNodes(): GridStackEngine {\n if (this.batchMode) return this;\n this.nodes.forEach(n => {\n delete n._dirty;\n delete n._lastTried;\n });\n return this;\n }\n\n /** @internal called to save initial position/size to track real dirty state.\n * Note: should be called right after we call change event (so next API is can detect changes)\n * as well as right before we start move/resize/enter (so we can restore items to prev values) */\n public saveInitial(): GridStackEngine {\n this.nodes.forEach(n => {\n n._orig = Utils.copyPos({}, n);\n delete n._dirty;\n });\n this._hasLocked = this.nodes.some(n => n.locked);\n return this;\n }\n\n /** @internal restore all the nodes back to initial values (called when we leave) */\n public restoreInitial(): GridStackEngine {\n this.nodes.forEach(n => {\n if (Utils.samePos(n, n._orig)) return;\n Utils.copyPos(n, n._orig);\n n._dirty = true;\n });\n this._notify();\n return this;\n }\n\n /** call to add the given node to our list, fixing collision and re-packing */\n public addNode(node: GridStackNode, triggerAddEvent = false): GridStackNode {\n let dup = this.nodes.find(n => n._id === node._id);\n if (dup) return dup; // prevent inserting twice! return it instead.\n\n // skip prepareNode if we're in middle of column resize (not new) but do check for bounds!\n node = this._inColumnResize ? this.nodeBoundFix(node) : this.prepareNode(node);\n delete node._temporaryRemoved;\n delete node._removeDOM;\n\n if (node.autoPosition) {\n this._sortNodes();\n\n for (let i = 0;; ++i) {\n let x = i % this.column;\n let y = Math.floor(i / this.column);\n if (x + node.w > this.column) {\n continue;\n }\n let box = {x, y, w: node.w, h: node.h};\n if (!this.nodes.find(n => Utils.isIntercepted(box, n))) {\n node.x = x;\n node.y = y;\n delete node.autoPosition; // found our slot\n break;\n }\n }\n }\n\n this.nodes.push(node);\n if (triggerAddEvent) { this.addedNodes.push(node); }\n\n this._fixCollisions(node);\n if (!this.batchMode) { this._packNodes()._notify(); }\n return node;\n }\n\n public removeNode(node: GridStackNode, removeDOM = true, triggerEvent = false): GridStackEngine {\n if (!this.nodes.find(n => n === node)) {\n // TEST console.log(`Error: GridStackEngine.removeNode() node._id=${node._id} not found!`)\n return this;\n }\n if (triggerEvent) { // we wait until final drop to manually track removed items (rather than during drag)\n this.removedNodes.push(node);\n }\n if (removeDOM) node._removeDOM = true; // let CB remove actual HTML (used to set _id to null, but then we loose layout info)\n // don't use 'faster' .splice(findIndex(),1) in case node isn't in our list, or in multiple times.\n this.nodes = this.nodes.filter(n => n !== node);\n return this._packNodes()\n ._notify(node);\n }\n\n public removeAll(removeDOM = true): GridStackEngine {\n delete this._layouts;\n if (this.nodes.length === 0) return this;\n removeDOM && this.nodes.forEach(n => n._removeDOM = true); // let CB remove actual HTML (used to set _id to null, but then we loose layout info)\n this.removedNodes = this.nodes;\n this.nodes = [];\n return this._notify(this.removedNodes);\n }\n\n /** checks if item can be moved (layout constrain) vs moveNode(), returning true if was able to move.\n * In more complicated cases (maxRow) it will attempt at moving the item and fixing\n * others in a clone first, then apply those changes if still within specs. */\n public moveNodeCheck(node: GridStackNode, o: GridStackMoveOpts): boolean {\n // if (node.locked) return false;\n if (!this.changedPosConstrain(node, o)) return false;\n o.pack = true;\n\n // simpler case: move item directly...\n if (!this.maxRow/* && !this._hasLocked*/) {\n return this.moveNode(node, o);\n }\n\n // complex case: create a clone with NO maxRow (will check for out of bounds at the end)\n let clonedNode: GridStackNode;\n let clone = new GridStackEngine({\n column: this.column,\n float: this.float,\n nodes: this.nodes.map(n => {\n if (n === node) {\n clonedNode = {...n};\n return clonedNode;\n }\n return {...n};\n })\n });\n if (!clonedNode) return false;\n\n let canMove = clone.moveNode(clonedNode, o);\n // if maxRow make sure we are still valid size\n if (this.maxRow && canMove) {\n canMove = (clone.getRow() <= this.maxRow);\n // turns out we can't grow, then see if we can swap instead (ex: full grid) if we're not resizing\n if (!canMove && !o.resizing) {\n let collide = this.collide(node, o);\n if (collide && this.swap(node, collide)) {\n this._notify();\n return true;\n }\n }\n }\n if (!canMove) return false;\n\n // if clone was able to move, copy those mods over to us now instead of caller trying to do this all over!\n // Note: we can't use the list directly as elements and other parts point to actual node, so copy content\n clone.nodes.filter(n => n._dirty).forEach(c => {\n let n = this.nodes.find(a => a._id === c._id);\n if (!n) return;\n Utils.copyPos(n, c);\n n._dirty = true;\n });\n this._notify();\n return true;\n }\n\n /** return true if can fit in grid height constrain only (always true if no maxRow) */\n public willItFit(node: GridStackNode): boolean {\n delete node._willFitPos;\n if (!this.maxRow) return true;\n // create a clone with NO maxRow and check if still within size\n let clone = new GridStackEngine({\n column: this.column,\n float: this.float,\n nodes: this.nodes.map(n => {return {...n}})\n });\n let n = {...node}; // clone node so we don't mod any settings on it but have full autoPosition and min/max as well! #1687\n this.cleanupNode(n);\n delete n.el; delete n._id; delete n.content; delete n.grid;\n clone.addNode(n);\n if (clone.getRow() <= this.maxRow) {\n node._willFitPos = Utils.copyPos({}, n);\n return true;\n }\n return false;\n }\n\n /** true if x,y or w,h are different after clamping to min/max */\n public changedPosConstrain(node: GridStackNode, p: GridStackPosition): boolean {\n // make sure w,h are set\n p.w = p.w || node.w;\n p.h = p.h || node.h;\n if (node.x !== p.x || node.y !== p.y) return true;\n // check constrained w,h\n if (node.maxW) { p.w = Math.min(p.w, node.maxW); }\n if (node.maxH) { p.h = Math.min(p.h, node.maxH); }\n if (node.minW) { p.w = Math.max(p.w, node.minW); }\n if (node.minH) { p.h = Math.max(p.h, node.minH); }\n return (node.w !== p.w || node.h !== p.h);\n }\n\n /** return true if the passed in node was actually moved (checks for no-op and locked) */\n public moveNode(node: GridStackNode, o: GridStackMoveOpts): boolean {\n if (!node || /*node.locked ||*/ !o) return false;\n if (o.pack === undefined) o.pack = true;\n\n // constrain the passed in values and check if we're still changing our node\n if (typeof o.x !== 'number') { o.x = node.x; }\n if (typeof o.y !== 'number') { o.y = node.y; }\n if (typeof o.w !== 'number') { o.w = node.w; }\n if (typeof o.h !== 'number') { o.h = node.h; }\n let resizing = (node.w !== o.w || node.h !== o.h);\n let nn: GridStackNode = Utils.copyPos({}, node, true); // get min/max out first, then opt positions next\n Utils.copyPos(nn, o);\n nn = this.nodeBoundFix(nn, resizing);\n Utils.copyPos(o, nn);\n\n if (Utils.samePos(node, o)) return false;\n let prevPos: GridStackPosition = Utils.copyPos({}, node);\n\n // during while() collisions make sure to check entire row so larger items don't leap frog small ones (push them all down)\n let area = nn;\n // if (this._useEntireRowArea(node, nn)) {\n // area = {x: 0, w: this.column, y: nn.y, h: nn.h};\n // }\n\n // check if we will need to fix collision at our new location\n let collides = this.collideAll(node, area, o.skip);\n let needToMove = true;\n if (collides.length) {\n // now check to make sure we actually collided over 50% surface area while dragging\n let collide = node._moving && !o.nested ? this.collideCoverage(node, o, collides) : collides[0];\n if (collide) {\n needToMove = !this._fixCollisions(node, nn, collide, o); // check if already moved...\n } else {\n needToMove = false; // we didn't cover >50% for a move, skip...\n }\n }\n\n // now move (to the original ask vs the collision version which might differ) and repack things\n if (needToMove) {\n node._dirty = true;\n Utils.copyPos(node, nn);\n }\n if (o.pack) {\n this._packNodes()\n ._notify();\n }\n return !Utils.samePos(node, prevPos); // pack might have moved things back\n }\n\n public getRow(): number {\n return this.nodes.reduce((row, n) => Math.max(row, n.y + n.h), 0);\n }\n\n public beginUpdate(node: GridStackNode): GridStackEngine {\n if (!node._updating) {\n node._updating = true;\n delete node._skipDown;\n if (!this.batchMode) this.saveInitial();\n }\n return this;\n }\n\n public endUpdate(): GridStackEngine {\n let n = this.nodes.find(n => n._updating);\n if (n) {\n delete n._updating;\n delete n._skipDown;\n }\n return this;\n }\n\n /** saves a copy of the largest column layout (eg 12 even when rendering oneColumnMode, so we don't loose orig layout),\n * returning a list of widgets for serialization */\n public save(saveElement = true): GridStackNode[] {\n // use the highest layout for any saved info so we can have full detail on reload #1849\n let len = this._layouts?.length;\n let layout = len && this.column !== (len - 1) ? this._layouts[len - 1] : null;\n let list: GridStackNode[] = [];\n this._sortNodes();\n this.nodes.forEach(n => {\n let wl = layout?.find(l => l._id === n._id);\n let w: GridStackNode = {...n};\n // use layout info instead if set\n if (wl) { w.x = wl.x; w.y = wl.y; w.w = wl.w; }\n // delete internals\n for (let key in w) { if (key[0] === '_' || w[key] === null || w[key] === undefined ) delete w[key]; }\n delete w.grid;\n if (!saveElement) delete w.el;\n // delete default values (will be re-created on read)\n if (!w.autoPosition) delete w.autoPosition;\n if (!w.noResize) delete w.noResize;\n if (!w.noMove) delete w.noMove;\n if (!w.locked) delete w.locked;\n list.push(w);\n });\n return list;\n }\n\n /** @internal called whenever a node is added or moved - updates the cached layouts */\n public layoutsNodesChange(nodes: GridStackNode[]): GridStackEngine {\n if (!this._layouts || this._inColumnResize) return this;\n // remove smaller layouts - we will re-generate those on the fly... larger ones need to update\n this._layouts.forEach((layout, column) => {\n if (!layout || column === this.column) return this;\n if (column < this.column) {\n this._layouts[column] = undefined;\n }\n else {\n // we save the original x,y,w (h isn't cached) to see what actually changed to propagate better.\n // NOTE: we don't need to check against out of bound scaling/moving as that will be done when using those cache values. #1785\n let ratio = column / this.column;\n nodes.forEach(node => {\n if (!node._orig) return; // didn't change (newly added ?)\n let n = layout.find(l => l._id === node._id);\n if (!n) return; // no cache for new nodes. Will use those values.\n // Y changed, push down same amount\n // TODO: detect doing item 'swaps' will help instead of move (especially in 1 column mode)\n if (node.y !== node._orig.y) {\n n.y += (node.y - node._orig.y);\n }\n // X changed, scale from new position\n if (node.x !== node._orig.x) {\n n.x = Math.round(node.x * ratio);\n }\n // width changed, scale from new width\n if (node.w !== node._orig.w) {\n n.w = Math.round(node.w * ratio);\n }\n // ...height always carries over from cache\n });\n }\n });\n return this;\n }\n\n /**\n * @internal Called to scale the widget width & position up/down based on the column change.\n * Note we store previous layouts (especially original ones) to make it possible to go\n * from say 12 -> 1 -> 12 and get back to where we were.\n *\n * @param prevColumn previous number of columns\n * @param column new column number\n * @param nodes different sorted list (ex: DOM order) instead of current list\n * @param layout specify the type of re-layout that will happen (position, size, etc...).\n * Note: items will never be outside of the current column boundaries. default (moveScale). Ignored for 1 column\n */\n public updateNodeWidths(prevColumn: number, column: number, nodes: GridStackNode[], layout: ColumnOptions = 'moveScale'): GridStackEngine {\n if (!this.nodes.length || !column || prevColumn === column) return this;\n\n // cache the current layout in case they want to go back (like 12 -> 1 -> 12) as it requires original data\n this.cacheLayout(this.nodes, prevColumn);\n this.batchUpdate(); // do this EARLY as it will call saveInitial() so we can detect where we started for _dirty and collision\n let newNodes: GridStackNode[] = [];\n\n // if we're going to 1 column and using DOM order rather than default sorting, then generate that layout\n let domOrder = false;\n if (column === 1 && nodes?.length) {\n domOrder = true;\n let top = 0;\n nodes.forEach(n => {\n n.x = 0;\n n.w = 1;\n n.y = Math.max(n.y, top);\n top = n.y + n.h;\n });\n newNodes = nodes;\n nodes = [];\n } else {\n nodes = Utils.sort(this.nodes, -1, prevColumn); // current column reverse sorting so we can insert last to front (limit collision)\n }\n\n // see if we have cached previous layout IFF we are going up in size (restore) otherwise always\n // generate next size down from where we are (looks more natural as you gradually size down).\n let cacheNodes: Layout[] = [];\n if (column > prevColumn) {\n cacheNodes = this._layouts[column] || [];\n // ...if not, start with the largest layout (if not already there) as down-scaling is more accurate\n // by pretending we came from that larger column by assigning those values as starting point\n let lastIndex = this._layouts.length - 1;\n if (!cacheNodes.length && prevColumn !== lastIndex && this._layouts[lastIndex]?.length) {\n prevColumn = lastIndex;\n this._layouts[lastIndex].forEach(cacheNode => {\n let n = nodes.find(n => n._id === cacheNode._id);\n if (n) {\n // still current, use cache info positions\n n.x = cacheNode.x;\n n.y = cacheNode.y;\n n.w = cacheNode.w;\n }\n });\n }\n }\n\n // if we found cache re-use those nodes that are still current\n cacheNodes.forEach(cacheNode => {\n let j = nodes.findIndex(n => n._id === cacheNode._id);\n if (j !== -1) {\n // still current, use cache info positions\n nodes[j].x = cacheNode.x;\n nodes[j].y = cacheNode.y;\n nodes[j].w = cacheNode.w;\n newNodes.push(nodes[j]);\n nodes.splice(j, 1);\n }\n });\n // ...and add any extra non-cached ones\n if (nodes.length) {\n if (typeof layout === 'function') {\n layout(column, prevColumn, newNodes, nodes);\n } else if (!domOrder) {\n let ratio = column / prevColumn;\n let move = (layout === 'move' || layout === 'moveScale');\n let scale = (layout === 'scale' || layout === 'moveScale');\n nodes.forEach(node => {\n // NOTE: x + w could be outside of the grid, but addNode() below will handle that\n node.x = (column === 1 ? 0 : (move ? Math.round(node.x * ratio) : Math.min(node.x, column - 1)));\n node.w = ((column === 1 || prevColumn === 1) ? 1 :\n scale ? (Math.round(node.w * ratio) || 1) : (Math.min(node.w, column)));\n newNodes.push(node);\n });\n nodes = [];\n }\n }\n\n // finally re-layout them in reverse order (to get correct placement)\n newNodes = Utils.sort(newNodes, -1, column);\n this._inColumnResize = true; // prevent cache update\n this.nodes = []; // pretend we have no nodes to start with (add() will use same structures) to simplify layout\n newNodes.forEach(node => {\n this.addNode(node, false); // 'false' for add event trigger\n delete node._orig; // make sure the commit doesn't try to restore things back to original\n });\n this.commit();\n delete this._inColumnResize;\n return this;\n }\n\n /**\n * call to cache the given layout internally to the given location so we can restore back when column changes size\n * @param nodes list of nodes\n * @param column corresponding column index to save it under\n * @param clear if true, will force other caches to be removed (default false)\n */\n public cacheLayout(nodes: GridStackNode[], column: number, clear = false): GridStackEngine {\n let copy: Layout[] = [];\n nodes.forEach((n, i) => {\n n._id = n._id || GridStackEngine._idSeq++; // make sure we have an id in case this is new layout, else re-use id already set\n copy[i] = {x: n.x, y: n.y, w: n.w, _id: n._id} // only thing we change is x,y,w and id to find it back\n });\n this._layouts = clear ? [] : this._layouts || []; // use array to find larger quick\n this._layouts[column] = copy;\n return this;\n }\n\n /**\n * call to cache the given node layout internally to the given location so we can restore back when column changes size\n * @param node single node to cache\n * @param column corresponding column index to save it under\n */\n public cacheOneLayout(n: GridStackNode, column: number): GridStackEngine {\n n._id = n._id || GridStackEngine._idSeq++;\n let layout: Layout = {x: n.x, y: n.y, w: n.w, _id: n._id}\n this._layouts = this._layouts || [];\n this._layouts[column] = this._layouts[column] || [];\n let index = this._layouts[column].findIndex(l => l._id === n._id);\n index === -1 ? this._layouts[column].push(layout) : this._layouts[column][index] = layout;\n return this;\n }\n\n\n /** called to remove all internal values but the _id */\n public cleanupNode(node: GridStackNode): GridStackEngine {\n for (let prop in node) {\n if (prop[0] === '_' && prop !== '_id') delete node[prop];\n }\n return this;\n }\n}\n\n/** @internal class to store per column layout bare minimal info (subset of GridStackWidget) */\ninterface Layout {\n x: number;\n y: number;\n w: number;\n _id: number; // so we can find full node back\n}\n","/**\r\n * index-jq.ts 5.0 - everything you need for a Grid that uses Jquery-ui drag&drop (original, full feature)\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nexport * from './types';\r\nexport * from './utils';\r\nexport * from './gridstack-engine';\r\nexport * from './gridstack-ddi';\r\nexport * from './gridstack';\r\n\r\nexport * from './jq/gridstack-dd-jqueryui';\r\n\r\n// declare module 'gridstack'; for umd ?\r\n","/*!\r\n * GridStack 5.0\r\n * https://gridstackjs.com/\r\n *\r\n * Copyright (c) 2021 Alain Dumesny\r\n * see root license https://github.com/gridstack/gridstack.js/tree/master/LICENSE\r\n */\r\nimport { GridStackEngine } from './gridstack-engine';\r\nimport { Utils, HeightData } from './utils';\r\nimport { ColumnOptions, GridItemHTMLElement, GridStackElement, GridStackEventHandlerCallback,\r\n GridStackNode, GridStackOptions, GridStackWidget, numberOrString, DDUIData, DDDragInOpt, GridStackPosition } from './types';\r\nimport { GridStackDDI } from './gridstack-ddi';\r\n\r\n// export all dependent file as well to make it easier for users to just import the main file\r\nexport * from './types';\r\nexport * from './utils';\r\nexport * from './gridstack-engine';\r\nexport * from './gridstack-ddi';\r\n\r\nexport interface GridHTMLElement extends HTMLElement {\r\n gridstack?: GridStack; // grid's parent DOM element points back to grid class\r\n}\r\n/** list of possible events, or space separated list of them */\r\nexport type GridStackEvent = 'added' | 'change' | 'disable' | 'drag' | 'dragstart' | 'dragstop' | 'dropped' |\r\n 'enable' | 'removed' | 'resize' | 'resizestart' | 'resizestop' | string;\r\n\r\n/** Defines the coordinates of an object */\r\nexport interface MousePosition {\r\n top: number;\r\n left: number;\r\n}\r\n\r\n/** Defines the position of a cell inside the grid*/\r\nexport interface CellPosition {\r\n x: number;\r\n y: number;\r\n}\r\n\r\ninterface GridCSSStyleSheet extends CSSStyleSheet {\r\n _id?: string; // random id we will use to style us\r\n _max?: number; // internal tracker of the max # of rows we created\\\r\n}\r\n\r\n// default values for grid options - used during init and when saving out\r\nconst GridDefaults: GridStackOptions = {\r\n column: 12,\r\n minRow: 0,\r\n maxRow: 0,\r\n itemClass: 'grid-stack-item',\r\n placeholderClass: 'grid-stack-placeholder',\r\n placeholderText: '',\r\n handle: '.grid-stack-item-content',\r\n handleClass: null,\r\n styleInHead: false,\r\n cellHeight: 'auto',\r\n cellHeightThrottle: 100,\r\n margin: 10,\r\n auto: true,\r\n minWidth: 768,\r\n float: false,\r\n staticGrid: false,\r\n animate: true,\r\n alwaysShowResizeHandle: false,\r\n resizable: {\r\n autoHide: true,\r\n handles: 'se'\r\n },\r\n draggable: {\r\n handle: '.grid-stack-item-content',\r\n scroll: false,\r\n appendTo: 'body'\r\n },\r\n disableDrag: false,\r\n disableResize: false,\r\n rtl: 'auto',\r\n removable: false,\r\n removableOptions: {\r\n accept: '.grid-stack-item'\r\n },\r\n marginUnit: 'px',\r\n cellHeightUnit: 'px',\r\n disableOneColumnMode: false,\r\n oneColumnModeDomSort: false\r\n};\r\n\r\n/**\r\n * Main gridstack class - you will need to call `GridStack.init()` first to initialize your grid.\r\n * Note: your grid elements MUST have the following classes for the CSS layout to work:\r\n * @example\r\n *
\r\n *
\r\n *
Item 1
\r\n *
\r\n *
\r\n */\r\nexport class GridStack {\r\n\r\n /**\r\n * initializing the HTML element, or selector string, into a grid will return the grid. Calling it again will\r\n * simply return the existing instance (ignore any passed options). There is also an initAll() version that support\r\n * multiple grids initialization at once. Or you can use addGrid() to create the entire grid from JSON.\r\n * @param options grid options (optional)\r\n * @param elOrString element or CSS selector (first one used) to convert to a grid (default to '.grid-stack' class selector)\r\n *\r\n * @example\r\n * let grid = GridStack.init();\r\n *\r\n * Note: the HTMLElement (of type GridHTMLElement) will store a `gridstack: GridStack` value that can be retrieve later\r\n * let grid = document.querySelector('.grid-stack').gridstack;\r\n */\r\n public static init(options: GridStackOptions = {}, elOrString: GridStackElement = '.grid-stack'): GridStack {\r\n let el = GridStack.getGridElement(elOrString);\r\n if (!el) {\r\n if (typeof elOrString === 'string') {\r\n console.error('GridStack.initAll() no grid was found with selector \"' + elOrString + '\" - element missing or wrong selector ?' +\r\n '\\nNote: \".grid-stack\" is required for proper CSS styling and drag/drop, and is the default selector.');\r\n } else {\r\n console.error('GridStack.init() no grid element was passed.');\r\n }\r\n return null;\r\n }\r\n if (!el.gridstack) {\r\n el.gridstack = new GridStack(el, Utils.cloneDeep(options));\r\n }\r\n return el.gridstack\r\n }\r\n\r\n /**\r\n * Will initialize a list of elements (given a selector) and return an array of grids.\r\n * @param options grid options (optional)\r\n * @param selector elements selector to convert to grids (default to '.grid-stack' class selector)\r\n *\r\n * @example\r\n * let grids = GridStack.initAll();\r\n * grids.forEach(...)\r\n */\r\n public static initAll(options: GridStackOptions = {}, selector = '.grid-stack'): GridStack[] {\r\n let grids: GridStack[] = [];\r\n GridStack.getGridElements(selector).forEach(el => {\r\n if (!el.gridstack) {\r\n el.gridstack = new GridStack(el, Utils.cloneDeep(options));\r\n delete options.dragIn; delete options.dragInOptions; // only need to be done once (really a static global thing, not per grid)\r\n }\r\n grids.push(el.gridstack);\r\n });\r\n if (grids.length === 0) {\r\n console.error('GridStack.initAll() no grid was found with selector \"' + selector + '\" - element missing or wrong selector ?' +\r\n '\\nNote: \".grid-stack\" is required for proper CSS styling and drag/drop, and is the default selector.');\r\n }\r\n return grids;\r\n }\r\n\r\n /**\r\n * call to create a grid with the given options, including loading any children from JSON structure. This will call GridStack.init(), then\r\n * grid.load() on any passed children (recursively). Great alternative to calling init() if you want entire grid to come from\r\n * JSON serialized data, including options.\r\n * @param parent HTML element parent to the grid\r\n * @param opt grids options used to initialize the grid, and list of children\r\n */\r\n public static addGrid(parent: HTMLElement, opt: GridStackOptions = {}): GridStack {\r\n if (!parent) return null;\r\n\r\n // create the grid element, but check if the passed 'parent' already has grid styling and should be used instead\r\n let el = parent;\r\n if (!parent.classList.contains('grid-stack')) {\r\n let doc = document.implementation.createHTMLDocument(''); // IE needs a param\r\n doc.body.innerHTML = `
`;\r\n el = doc.body.children[0] as HTMLElement;\r\n parent.appendChild(el);\r\n }\r\n\r\n // create grid class and load any children\r\n let grid = GridStack.init(opt, el);\r\n if (grid.opts.children) {\r\n let children = grid.opts.children;\r\n delete grid.opts.children;\r\n grid.load(children);\r\n }\r\n return grid;\r\n }\r\n\r\n /** scoping so users can call GridStack.Utils.sort() for example */\r\n public static Utils = Utils;\r\n\r\n /** scoping so users can call new GridStack.Engine(12) for example */\r\n public static Engine = GridStackEngine;\r\n\r\n /** the HTML element tied to this grid after it's been initialized */\r\n public el: GridHTMLElement;\r\n\r\n /** engine used to implement non DOM grid functionality */\r\n public engine: GridStackEngine;\r\n\r\n /** grid options - public for classes to access, but use methods to modify! */\r\n public opts: GridStackOptions;\r\n\r\n /** @internal create placeholder DIV as needed */\r\n public get placeholder(): HTMLElement {\r\n if (!this._placeholder) {\r\n let placeholderChild = document.createElement('div'); // child so padding match item-content\r\n placeholderChild.className = 'placeholder-content';\r\n if (this.opts.placeholderText) {\r\n placeholderChild.innerHTML = this.opts.placeholderText;\r\n }\r\n this._placeholder = document.createElement('div');\r\n this._placeholder.classList.add(this.opts.placeholderClass, GridDefaults.itemClass, this.opts.itemClass);\r\n this.placeholder.appendChild(placeholderChild);\r\n }\r\n return this._placeholder;\r\n }\r\n /** @internal */\r\n private _placeholder: HTMLElement;\r\n /** @internal */\r\n private _prevColumn: number;\r\n /** @internal */\r\n private _ignoreLayoutsNodeChange: boolean;\r\n /** @internal */\r\n public _gsEventHandler = {};\r\n /** @internal */\r\n private _styles: GridCSSStyleSheet;\r\n /** @internal flag to keep cells square during resize */\r\n private _isAutoCellHeight: boolean;\r\n /** @internal track event binding to window resize so we can remove */\r\n private _windowResizeBind: () => void;\r\n /** @internal limit auto cell resizing method */\r\n private _cellHeightThrottle: () => void;\r\n /** @internal true when loading items to insert first rather than append */\r\n private _insertNotAppend: boolean;\r\n /** @internal extra row added when dragging at the bottom of the grid */\r\n private _extraDragRow = 0;\r\n /** @internal true if nested grid should get column count from our width */\r\n private _autoColumn?: boolean;\r\n\r\n /**\r\n * Construct a grid item from the given element and options\r\n * @param el\r\n * @param opts\r\n */\r\n public constructor(el: GridHTMLElement, opts: GridStackOptions = {}) {\r\n this.el = el; // exposed HTML element to the user\r\n opts = opts || {}; // handles null/undefined/0\r\n\r\n // if row property exists, replace minRow and maxRow instead\r\n if (opts.row) {\r\n opts.minRow = opts.maxRow = opts.row;\r\n delete opts.row;\r\n }\r\n let rowAttr = Utils.toNumber(el.getAttribute('gs-row'));\r\n\r\n // flag only valid in sub-grids (handled by parent, not here)\r\n if (opts.column === 'auto') {\r\n delete opts.column;\r\n }\r\n\r\n // elements attributes override any passed options (like CSS style) - merge the two together\r\n let defaults: GridStackOptions = {...Utils.cloneDeep(GridDefaults),\r\n column: Utils.toNumber(el.getAttribute('gs-column')) || 12,\r\n minRow: rowAttr ? rowAttr : Utils.toNumber(el.getAttribute('gs-min-row')) || 0,\r\n maxRow: rowAttr ? rowAttr : Utils.toNumber(el.getAttribute('gs-max-row')) || 0,\r\n staticGrid: Utils.toBool(el.getAttribute('gs-static')) || false,\r\n _styleSheetClass: 'grid-stack-instance-' + (Math.random() * 10000).toFixed(0),\r\n alwaysShowResizeHandle: opts.alwaysShowResizeHandle || false,\r\n resizable: {\r\n autoHide: !(opts.alwaysShowResizeHandle || false),\r\n handles: 'se'\r\n },\r\n draggable: {\r\n handle: (opts.handleClass ? '.' + opts.handleClass : (opts.handle ? opts.handle : '')) || '.grid-stack-item-content',\r\n scroll: false,\r\n appendTo: 'body'\r\n },\r\n removableOptions: {\r\n accept: '.' + (opts.itemClass || 'grid-stack-item')\r\n },\r\n };\r\n if (el.getAttribute('gs-animate')) { // default to true, but if set to false use that instead\r\n defaults.animate = Utils.toBool(el.getAttribute('gs-animate'))\r\n }\r\n\r\n this.opts = Utils.defaults(opts, defaults);\r\n opts = null; // make sure we use this.opts instead\r\n this.initMargin(); // part of settings defaults...\r\n\r\n // Now check if we're loading into 1 column mode FIRST so we don't do un-necessary work (like cellHeight = width / 12 then go 1 column)\r\n if (this.opts.column !== 1 && !this.opts.disableOneColumnMode && this._widthOrContainer() <= this.opts.minWidth) {\r\n this._prevColumn = this.getColumn();\r\n this.opts.column = 1;\r\n }\r\n\r\n if (this.opts.rtl === 'auto') {\r\n this.opts.rtl = (el.style.direction === 'rtl');\r\n }\r\n\r\n if (this.opts.rtl) {\r\n this.el.classList.add('grid-stack-rtl');\r\n }\r\n\r\n // check if we're been nested, and if so update our style and keep pointer around (used during save)\r\n let parentGridItemEl = Utils.closestByClass(this.el, GridDefaults.itemClass) as GridItemHTMLElement;\r\n if (parentGridItemEl && parentGridItemEl.gridstackNode) {\r\n this.opts._isNested = parentGridItemEl.gridstackNode;\r\n this.opts._isNested.subGrid = this;\r\n parentGridItemEl.classList.add('grid-stack-nested');\r\n this.el.classList.add('grid-stack-nested');\r\n }\r\n\r\n this._isAutoCellHeight = (this.opts.cellHeight === 'auto');\r\n if (this._isAutoCellHeight || this.opts.cellHeight === 'initial') {\r\n // make the cell content square initially (will use resize/column event to keep it square)\r\n this.cellHeight(undefined, false);\r\n } else {\r\n // append unit if any are set\r\n if (typeof this.opts.cellHeight == 'number' && this.opts.cellHeightUnit && this.opts.cellHeightUnit !== GridDefaults.cellHeightUnit) {\r\n this.opts.cellHeight = this.opts.cellHeight + this.opts.cellHeightUnit;\r\n delete this.opts.cellHeightUnit;\r\n }\r\n this.cellHeight(this.opts.cellHeight, false);\r\n }\r\n\r\n this.el.classList.add(this.opts._styleSheetClass);\r\n\r\n this._setStaticClass();\r\n\r\n this.engine = new GridStackEngine({\r\n column: this.getColumn(),\r\n float: this.opts.float,\r\n maxRow: this.opts.maxRow,\r\n onChange: (cbNodes) => {\r\n let maxH = 0;\r\n this.engine.nodes.forEach(n => { maxH = Math.max(maxH, n.y + n.h) });\r\n cbNodes.forEach(n => {\r\n let el = n.el;\r\n if (!el) return;\r\n if (n._removeDOM) {\r\n if (el) el.remove();\r\n delete n._removeDOM;\r\n } else {\r\n this._writePosAttr(el, n);\r\n }\r\n });\r\n this._updateStyles(false, maxH); // false = don't recreate, just append if need be\r\n }\r\n });\r\n\r\n if (this.opts.auto) {\r\n this.batchUpdate(); // prevent in between re-layout #1535 TODO: this only set float=true, need to prevent collision check...\r\n let elements: {el: HTMLElement; i: number}[] = [];\r\n this.getGridItems().forEach(el => { // get dom elements (not nodes yet)\r\n let x = parseInt(el.getAttribute('gs-x'));\r\n let y = parseInt(el.getAttribute('gs-y'));\r\n elements.push({\r\n el,\r\n // if x,y are missing (autoPosition) add them to end of list - but keep their respective DOM order\r\n i: (Number.isNaN(x) ? 1000 : x) + (Number.isNaN(y) ? 1000 : y) * this.getColumn()\r\n });\r\n });\r\n elements.sort((a, b) => a.i - b.i).forEach(e => this._prepareElement(e.el));\r\n this.commit();\r\n }\r\n\r\n this.setAnimation(this.opts.animate);\r\n\r\n this._updateStyles();\r\n if (this.opts.column != 12) {\r\n this.el.classList.add('grid-stack-' + this.opts.column);\r\n }\r\n\r\n // legacy support to appear 'per grid` options when really global.\r\n if (this.opts.dragIn) GridStack.setupDragIn(this.opts.dragIn, this.opts.dragInOptions);\r\n delete this.opts.dragIn;\r\n delete this.opts.dragInOptions;\r\n\r\n this._setupRemoveDrop();\r\n this._setupAcceptWidget();\r\n this._updateWindowResizeEvent();\r\n }\r\n\r\n /**\r\n * add a new widget and returns it.\r\n *\r\n * Widget will be always placed even if result height is more than actual grid height.\r\n * You need to use `willItFit()` before calling addWidget for additional check.\r\n * See also `makeWidget()`.\r\n *\r\n * @example\r\n * let grid = GridStack.init();\r\n * grid.addWidget({w: 3, content: 'hello'});\r\n * grid.addWidget('
hello
', {w: 3});\r\n *\r\n * @param el GridStackWidget (which can have content string as well), html element, or string definition to add\r\n * @param options widget position/size options (optional, and ignore if first param is already option) - see GridStackWidget\r\n */\r\n public addWidget(els?: GridStackWidget | GridStackElement, options?: GridStackWidget): GridItemHTMLElement {\r\n\r\n // support legacy call for now ?\r\n if (arguments.length > 2) {\r\n console.warn('gridstack.ts: `addWidget(el, x, y, width...)` is deprecated. Use `addWidget({x, y, w, content, ...})`. It will be removed soon');\r\n // eslint-disable-next-line prefer-rest-params\r\n let a = arguments, i = 1,\r\n opt: GridStackWidget = { x:a[i++], y:a[i++], w:a[i++], h:a[i++], autoPosition:a[i++],\r\n minW:a[i++], maxW:a[i++], minH:a[i++], maxH:a[i++], id:a[i++] };\r\n return this.addWidget(els, opt);\r\n }\r\n\r\n function isGridStackWidget(w: GridStackWidget): w is GridStackWidget { // https://medium.com/ovrsea/checking-the-type-of-an-object-in-typescript-the-type-guards-24d98d9119b0\r\n return w.x !== undefined || w.y !== undefined || w.w !== undefined || w.h !== undefined || w.content !== undefined ? true : false;\r\n }\r\n\r\n let el: HTMLElement;\r\n if (typeof els === 'string') {\r\n let doc = document.implementation.createHTMLDocument(''); // IE needs a param\r\n doc.body.innerHTML = els;\r\n el = doc.body.children[0] as HTMLElement;\r\n } else if (arguments.length === 0 || arguments.length === 1 && isGridStackWidget(els)) {\r\n let content = els ? (els as GridStackWidget).content || '' : '';\r\n options = els;\r\n let doc = document.implementation.createHTMLDocument(''); // IE needs a param\r\n doc.body.innerHTML = `
${content}
`;\r\n el = doc.body.children[0] as HTMLElement;\r\n } else {\r\n el = els as HTMLElement;\r\n }\r\n\r\n // Tempting to initialize the passed in opt with default and valid values, but this break knockout demos\r\n // as the actual value are filled in when _prepareElement() calls el.getAttribute('gs-xyz) before adding the node.\r\n // So make sure we load any DOM attributes that are not specified in passed in options (which override)\r\n let domAttr = this._readAttr(el);\r\n options = Utils.cloneDeep(options) || {}; // make a copy before we modify in case caller re-uses it\r\n Utils.defaults(options, domAttr);\r\n let node = this.engine.prepareNode(options);\r\n this._writeAttr(el, options);\r\n\r\n if (this._insertNotAppend) {\r\n this.el.prepend(el);\r\n } else {\r\n this.el.appendChild(el);\r\n }\r\n\r\n // similar to makeWidget() that doesn't read attr again and worse re-create a new node and loose any _id\r\n this._prepareElement(el, true, options);\r\n this._updateContainerHeight();\r\n\r\n // check if nested grid definition is present\r\n if (node.subGrid && !(node.subGrid as GridStack).el) { // see if there is a sub-grid to create too\r\n // if column special case it set, remember that flag and set default\r\n let autoColumn: boolean;\r\n let ops = node.subGrid as GridStackOptions;\r\n if (ops.column === 'auto') {\r\n ops.column = node.w;\r\n ops.disableOneColumnMode = true; // driven by parent\r\n autoColumn = true;\r\n }\r\n let content = node.el.querySelector('.grid-stack-item-content') as HTMLElement;\r\n node.subGrid = GridStack.addGrid(content, node.subGrid as GridStackOptions);\r\n if (autoColumn) { node.subGrid._autoColumn = true; }\r\n }\r\n\r\n this._triggerAddEvent();\r\n this._triggerChangeEvent();\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n /**\r\n * saves the current layout returning a list of widgets for serialization which might include any nested grids.\r\n * @param saveContent if true (default) the latest html inside .grid-stack-content will be saved to GridStackWidget.content field, else it will\r\n * be removed.\r\n * @param saveGridOpt if true (default false), save the grid options itself, so you can call the new GridStack.addGrid()\r\n * to recreate everything from scratch. GridStackOptions.children would then contain the widget list instead.\r\n * @returns list of widgets or full grid option, including .children list of widgets\r\n */\r\n public save(saveContent = true, saveGridOpt = false): GridStackWidget[] | GridStackOptions {\r\n // return copied nodes we can modify at will...\r\n let list = this.engine.save(saveContent);\r\n\r\n // check for HTML content and nested grids\r\n list.forEach(n => {\r\n if (saveContent && n.el && !n.subGrid) { // sub-grid are saved differently, not plain content\r\n let sub = n.el.querySelector('.grid-stack-item-content');\r\n n.content = sub ? sub.innerHTML : undefined;\r\n if (!n.content) delete n.content;\r\n } else {\r\n if (!saveContent) { delete n.content; }\r\n // check for nested grid\r\n if (n.subGrid) {\r\n n.subGrid = (n.subGrid as GridStack).save(saveContent, true) as GridStackOptions;\r\n }\r\n }\r\n delete n.el;\r\n });\r\n\r\n // check if save entire grid options (needed for recursive) + children...\r\n if (saveGridOpt) {\r\n let o: GridStackOptions = Utils.cloneDeep(this.opts);\r\n // delete default values that will be recreated on launch\r\n if (o.marginBottom === o.marginTop && o.marginRight === o.marginLeft && o.marginTop === o.marginRight) {\r\n o.margin = o.marginTop;\r\n delete o.marginTop; delete o.marginRight; delete o.marginBottom; delete o.marginLeft;\r\n }\r\n if (o.rtl === (this.el.style.direction === 'rtl')) { o.rtl = 'auto' }\r\n if (this._isAutoCellHeight) {\r\n o.cellHeight = 'auto'\r\n }\r\n if (this._autoColumn) {\r\n o.column = 'auto';\r\n delete o.disableOneColumnMode;\r\n }\r\n Utils.removeInternalAndSame(o, GridDefaults);\r\n o.children = list;\r\n return o;\r\n }\r\n\r\n return list;\r\n }\r\n\r\n /**\r\n * load the widgets from a list. This will call update() on each (matching by id) or add/remove widgets that are not there.\r\n *\r\n * @param layout list of widgets definition to update/create\r\n * @param addAndRemove boolean (default true) or callback method can be passed to control if and how missing widgets can be added/removed, giving\r\n * the user control of insertion.\r\n *\r\n * @example\r\n * see http://gridstackjs.com/demo/serialization.html\r\n **/\r\n public load(layout: GridStackWidget[], addAndRemove: boolean | ((g: GridStack, w: GridStackWidget, add: boolean) => GridItemHTMLElement) = true): GridStack {\r\n let items = GridStack.Utils.sort([...layout], -1, this._prevColumn || this.getColumn()); // make copy before we mod/sort\r\n this._insertNotAppend = true; // since create in reverse order...\r\n\r\n // if we're loading a layout into 1 column (_prevColumn is set only when going to 1) and items don't fit, make sure to save\r\n // the original wanted layout so we can scale back up correctly #1471\r\n if (this._prevColumn && this._prevColumn !== this.opts.column && items.some(n => (n.x + n.w) > this.opts.column)) {\r\n this._ignoreLayoutsNodeChange = true; // skip layout update\r\n this.engine.cacheLayout(items, this._prevColumn, true);\r\n }\r\n\r\n let removed: GridStackNode[] = [];\r\n this.batchUpdate();\r\n\r\n // see if any items are missing from new layout and need to be removed first\r\n if (addAndRemove) {\r\n let copyNodes = [...this.engine.nodes]; // don't loop through array you modify\r\n copyNodes.forEach(n => {\r\n let item = items.find(w => n.id === w.id);\r\n if (!item) {\r\n if (typeof(addAndRemove) === 'function') {\r\n addAndRemove(this, n, false);\r\n } else {\r\n removed.push(n); // batch keep track\r\n this.removeWidget(n.el, true, false);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // now add/update the widgets\r\n items.forEach(w => {\r\n let item = (w.id || w.id === 0) ? this.engine.nodes.find(n => n.id === w.id) : undefined;\r\n if (item) {\r\n this.update(item.el, w);\r\n if (w.subGrid && (w.subGrid as GridStackOptions).children) { // update any sub grid as well\r\n let sub = item.el.querySelector('.grid-stack') as GridHTMLElement;\r\n if (sub && sub.gridstack) {\r\n sub.gridstack.load((w.subGrid as GridStackOptions).children); // TODO: support updating grid options ?\r\n this._insertNotAppend = true; // got reset by above call\r\n }\r\n }\r\n } else if (addAndRemove) {\r\n if (typeof(addAndRemove) === 'function') {\r\n w = addAndRemove(this, w, true).gridstackNode;\r\n } else {\r\n w = this.addWidget(w).gridstackNode;\r\n }\r\n }\r\n });\r\n\r\n this.engine.removedNodes = removed;\r\n this.commit();\r\n\r\n // after commit, clear that flag\r\n delete this._ignoreLayoutsNodeChange;\r\n delete this._insertNotAppend;\r\n return this;\r\n }\r\n\r\n /**\r\n * Initializes batch updates. You will see no changes until `commit()` method is called.\r\n */\r\n public batchUpdate(): GridStack {\r\n this.engine.batchUpdate();\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets current cell height.\r\n */\r\n public getCellHeight(forcePixel = false): number {\r\n if (this.opts.cellHeight && this.opts.cellHeight !== 'auto' &&\r\n (!forcePixel || !this.opts.cellHeightUnit || this.opts.cellHeightUnit === 'px')) {\r\n return this.opts.cellHeight as number;\r\n }\r\n // else get first cell height\r\n let el = this.el.querySelector('.' + this.opts.itemClass) as HTMLElement;\r\n if (el) {\r\n let height = Utils.toNumber(el.getAttribute('gs-h'));\r\n return Math.round(el.offsetHeight / height);\r\n }\r\n // else do entire grid and # of rows (but doesn't work if min-height is the actual constrain)\r\n let rows = parseInt(this.el.getAttribute('gs-current-row'));\r\n return rows ? Math.round(this.el.getBoundingClientRect().height / rows) : this.opts.cellHeight as number;\r\n }\r\n\r\n /**\r\n * Update current cell height - see `GridStackOptions.cellHeight` for format.\r\n * This method rebuilds an internal CSS style sheet.\r\n * Note: You can expect performance issues if call this method too often.\r\n *\r\n * @param val the cell height. If not passed (undefined), cells content will be made square (match width minus margin),\r\n * if pass 0 the CSS will be generated by the application instead.\r\n * @param update (Optional) if false, styles will not be updated\r\n *\r\n * @example\r\n * grid.cellHeight(100); // same as 100px\r\n * grid.cellHeight('70px');\r\n * grid.cellHeight(grid.cellWidth() * 1.2);\r\n */\r\n public cellHeight(val?: numberOrString, update = true): GridStack {\r\n\r\n // if not called internally, check if we're changing mode\r\n if (update && val !== undefined) {\r\n if (this._isAutoCellHeight !== (val === 'auto')) {\r\n this._isAutoCellHeight = (val === 'auto');\r\n this._updateWindowResizeEvent();\r\n }\r\n }\r\n if (val === 'initial' || val === 'auto') { val = undefined; }\r\n\r\n // make item content be square\r\n if (val === undefined) {\r\n let marginDiff = - (this.opts.marginRight as number) - (this.opts.marginLeft as number)\r\n + (this.opts.marginTop as number) + (this.opts.marginBottom as number);\r\n val = this.cellWidth() + marginDiff;\r\n }\r\n\r\n let data = Utils.parseHeight(val);\r\n if (this.opts.cellHeightUnit === data.unit && this.opts.cellHeight === data.h) {\r\n return this;\r\n }\r\n this.opts.cellHeightUnit = data.unit;\r\n this.opts.cellHeight = data.h;\r\n\r\n if (update) {\r\n this._updateStyles(true, this.getRow()); // true = force re-create, for that # of rows\r\n }\r\n return this;\r\n }\r\n\r\n /** Gets current cell width. */\r\n public cellWidth(): number {\r\n return this._widthOrContainer() / this.getColumn();\r\n }\r\n /** return our expected width (or parent) for 1 column check */\r\n private _widthOrContainer(): number {\r\n // use `offsetWidth` or `clientWidth` (no scrollbar) ?\r\n // https://stackoverflow.com/questions/21064101/understanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively\r\n return (this.el.clientWidth || this.el.parentElement.clientWidth || window.innerWidth);\r\n }\r\n\r\n /**\r\n * Finishes batch updates. Updates DOM nodes. You must call it after batchUpdate.\r\n */\r\n public commit(): GridStack {\r\n this.engine.commit();\r\n this._triggerRemoveEvent();\r\n this._triggerAddEvent();\r\n this._triggerChangeEvent();\r\n return this;\r\n }\r\n\r\n /** re-layout grid items to reclaim any empty space */\r\n public compact(): GridStack {\r\n this.engine.compact();\r\n this._triggerChangeEvent();\r\n return this;\r\n }\r\n\r\n /**\r\n * set the number of columns in the grid. Will update existing widgets to conform to new number of columns,\r\n * as well as cache the original layout so you can revert back to previous positions without loss.\r\n * Requires `gridstack-extra.css` or `gridstack-extra.min.css` for [2-11],\r\n * else you will need to generate correct CSS (see https://github.com/gridstack/gridstack.js#change-grid-columns)\r\n * @param column - Integer > 0 (default 12).\r\n * @param layout specify the type of re-layout that will happen (position, size, etc...).\r\n * Note: items will never be outside of the current column boundaries. default (moveScale). Ignored for 1 column\r\n */\r\n public column(column: number, layout: ColumnOptions = 'moveScale'): GridStack {\r\n if (column < 1 || this.opts.column === column) return this;\r\n let oldColumn = this.getColumn();\r\n\r\n // if we go into 1 column mode (which happens if we're sized less than minW unless disableOneColumnMode is on)\r\n // then remember the original columns so we can restore.\r\n if (column === 1) {\r\n this._prevColumn = oldColumn;\r\n } else {\r\n delete this._prevColumn;\r\n }\r\n\r\n this.el.classList.remove('grid-stack-' + oldColumn);\r\n this.el.classList.add('grid-stack-' + column);\r\n this.opts.column = this.engine.column = column;\r\n\r\n // update the items now - see if the dom order nodes should be passed instead (else default to current list)\r\n let domNodes: GridStackNode[];\r\n if (column === 1 && this.opts.oneColumnModeDomSort) {\r\n domNodes = [];\r\n this.getGridItems().forEach(el => { // get dom elements in order\r\n if (el.gridstackNode) { domNodes.push(el.gridstackNode); }\r\n });\r\n if (!domNodes.length) { domNodes = undefined; }\r\n }\r\n this.engine.updateNodeWidths(oldColumn, column, domNodes, layout);\r\n if (this._isAutoCellHeight) this.cellHeight();\r\n\r\n // and trigger our event last...\r\n this._ignoreLayoutsNodeChange = true; // skip layout update\r\n this._triggerChangeEvent();\r\n delete this._ignoreLayoutsNodeChange;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * get the number of columns in the grid (default 12)\r\n */\r\n public getColumn(): number {\r\n return this.opts.column as number;\r\n }\r\n\r\n /** returns an array of grid HTML elements (no placeholder) - used to iterate through our children in DOM order */\r\n public getGridItems(): GridItemHTMLElement[] {\r\n return Array.from(this.el.children)\r\n .filter((el: HTMLElement) => el.matches('.' + this.opts.itemClass) && !el.matches('.' + this.opts.placeholderClass)) as GridItemHTMLElement[];\r\n }\r\n\r\n /**\r\n * Destroys a grid instance. DO NOT CALL any methods or access any vars after this as it will free up members.\r\n * @param removeDOM if `false` grid and items HTML elements will not be removed from the DOM (Optional. Default `true`).\r\n */\r\n public destroy(removeDOM = true): GridStack {\r\n if (!this.el) return; // prevent multiple calls\r\n this._updateWindowResizeEvent(true);\r\n this.setStatic(true, false); // permanently removes DD but don't set CSS class (we're going away)\r\n this.setAnimation(false);\r\n if (!removeDOM) {\r\n this.removeAll(removeDOM);\r\n this.el.classList.remove(this.opts._styleSheetClass);\r\n } else {\r\n this.el.parentNode.removeChild(this.el);\r\n }\r\n this._removeStylesheet();\r\n this.el.removeAttribute('gs-current-row');\r\n delete this.opts._isNested;\r\n delete this.opts;\r\n delete this._placeholder;\r\n delete this.engine;\r\n delete this.el.gridstack; // remove circular dependency that would prevent a freeing\r\n delete this.el;\r\n return this;\r\n }\r\n\r\n /**\r\n * enable/disable floating widgets (default: `false`) See [example](http://gridstackjs.com/demo/float.html)\r\n */\r\n public float(val: boolean): GridStack {\r\n this.engine.float = val;\r\n this._triggerChangeEvent();\r\n return this;\r\n }\r\n\r\n /**\r\n * get the current float mode\r\n */\r\n public getFloat(): boolean {\r\n return this.engine.float;\r\n }\r\n\r\n /**\r\n * Get the position of the cell under a pixel on screen.\r\n * @param position the position of the pixel to resolve in\r\n * absolute coordinates, as an object with top and left properties\r\n * @param useDocRelative if true, value will be based on document position vs parent position (Optional. Default false).\r\n * Useful when grid is within `position: relative` element\r\n *\r\n * Returns an object with properties `x` and `y` i.e. the column and row in the grid.\r\n */\r\n public getCellFromPixel(position: MousePosition, useDocRelative = false): CellPosition {\r\n let box = this.el.getBoundingClientRect();\r\n // console.log(`getBoundingClientRect left: ${box.left} top: ${box.top} w: ${box.w} h: ${box.h}`)\r\n let containerPos: {top: number, left: number};\r\n if (useDocRelative) {\r\n containerPos = {top: box.top + document.documentElement.scrollTop, left: box.left};\r\n // console.log(`getCellFromPixel scrollTop: ${document.documentElement.scrollTop}`)\r\n } else {\r\n containerPos = {top: this.el.offsetTop, left: this.el.offsetLeft}\r\n // console.log(`getCellFromPixel offsetTop: ${containerPos.left} offsetLeft: ${containerPos.top}`)\r\n }\r\n let relativeLeft = position.left - containerPos.left;\r\n let relativeTop = position.top - containerPos.top;\r\n\r\n let columnWidth = (box.width / this.getColumn());\r\n let rowHeight = (box.height / parseInt(this.el.getAttribute('gs-current-row')));\r\n\r\n return {x: Math.floor(relativeLeft / columnWidth), y: Math.floor(relativeTop / rowHeight)};\r\n }\r\n\r\n /** returns the current number of rows, which will be at least `minRow` if set */\r\n public getRow(): number {\r\n return Math.max(this.engine.getRow(), this.opts.minRow);\r\n }\r\n\r\n /**\r\n * Checks if specified area is empty.\r\n * @param x the position x.\r\n * @param y the position y.\r\n * @param w the width of to check\r\n * @param h the height of to check\r\n */\r\n public isAreaEmpty(x: number, y: number, w: number, h: number): boolean {\r\n return this.engine.isAreaEmpty(x, y, w, h);\r\n }\r\n\r\n /**\r\n * If you add elements to your grid by hand, you have to tell gridstack afterwards to make them widgets.\r\n * If you want gridstack to add the elements for you, use `addWidget()` instead.\r\n * Makes the given element a widget and returns it.\r\n * @param els widget or single selector to convert.\r\n *\r\n * @example\r\n * let grid = GridStack.init();\r\n * grid.el.appendChild('
');\r\n * grid.makeWidget('#gsi-1');\r\n */\r\n public makeWidget(els: GridStackElement): GridItemHTMLElement {\r\n let el = GridStack.getElement(els);\r\n this._prepareElement(el, true);\r\n this._updateContainerHeight();\r\n this._triggerAddEvent();\r\n this._triggerChangeEvent();\r\n return el;\r\n }\r\n\r\n /**\r\n * Event handler that extracts our CustomEvent data out automatically for receiving custom\r\n * notifications (see doc for supported events)\r\n * @param name of the event (see possible values) or list of names space separated\r\n * @param callback function called with event and optional second/third param\r\n * (see README documentation for each signature).\r\n *\r\n * @example\r\n * grid.on('added', function(e, items) { log('added ', items)} );\r\n * or\r\n * grid.on('added removed change', function(e, items) { log(e.type, items)} );\r\n *\r\n * Note: in some cases it is the same as calling native handler and parsing the event.\r\n * grid.el.addEventListener('added', function(event) { log('added ', event.detail)} );\r\n *\r\n */\r\n public on(name: GridStackEvent, callback: GridStackEventHandlerCallback): GridStack {\r\n // check for array of names being passed instead\r\n if (name.indexOf(' ') !== -1) {\r\n let names = name.split(' ') as GridStackEvent[];\r\n names.forEach(name => this.on(name, callback));\r\n return this;\r\n }\r\n\r\n if (name === 'change' || name === 'added' || name === 'removed' || name === 'enable' || name === 'disable') {\r\n // native CustomEvent handlers - cash the generic handlers so we can easily remove\r\n let noData = (name === 'enable' || name === 'disable');\r\n if (noData) {\r\n this._gsEventHandler[name] = (event: Event) => callback(event);\r\n } else {\r\n this._gsEventHandler[name] = (event: CustomEvent) => callback(event, event.detail);\r\n }\r\n this.el.addEventListener(name, this._gsEventHandler[name]);\r\n } else if (name === 'drag' || name === 'dragstart' || name === 'dragstop' || name === 'resizestart' || name === 'resize' || name === 'resizestop' || name === 'dropped') {\r\n // drag&drop stop events NEED to be call them AFTER we update node attributes so handle them ourself.\r\n // do same for start event to make it easier...\r\n this._gsEventHandler[name] = callback;\r\n } else {\r\n console.log('GridStack.on(' + name + ') event not supported, but you can still use $(\".grid-stack\").on(...) while jquery-ui is still used internally.');\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * unsubscribe from the 'on' event below\r\n * @param name of the event (see possible values)\r\n */\r\n public off(name: GridStackEvent): GridStack {\r\n // check for array of names being passed instead\r\n if (name.indexOf(' ') !== -1) {\r\n let names = name.split(' ') as GridStackEvent[];\r\n names.forEach(name => this.off(name));\r\n return this;\r\n }\r\n\r\n if (name === 'change' || name === 'added' || name === 'removed' || name === 'enable' || name === 'disable') {\r\n // remove native CustomEvent handlers\r\n if (this._gsEventHandler[name]) {\r\n this.el.removeEventListener(name, this._gsEventHandler[name]);\r\n }\r\n }\r\n delete this._gsEventHandler[name];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes widget from the grid.\r\n * @param el widget or selector to modify\r\n * @param removeDOM if `false` DOM element won't be removed from the tree (Default? true).\r\n * @param triggerEvent if `false` (quiet mode) element will not be added to removed list and no 'removed' callbacks will be called (Default? true).\r\n */\r\n public removeWidget(els: GridStackElement, removeDOM = true, triggerEvent = true): GridStack {\r\n GridStack.getElements(els).forEach(el => {\r\n if (el.parentElement !== this.el) return; // not our child!\r\n let node = el.gridstackNode;\r\n // For Meteor support: https://github.com/gridstack/gridstack.js/pull/272\r\n if (!node) {\r\n node = this.engine.nodes.find(n => el === n.el);\r\n }\r\n if (!node) return;\r\n\r\n // remove our DOM data (circular link) and drag&drop permanently\r\n delete el.gridstackNode;\r\n GridStackDDI.get().remove(el);\r\n\r\n this.engine.removeNode(node, removeDOM, triggerEvent);\r\n\r\n if (removeDOM && el.parentElement) {\r\n el.remove(); // in batch mode engine.removeNode doesn't call back to remove DOM\r\n }\r\n });\r\n if (triggerEvent) {\r\n this._triggerRemoveEvent();\r\n this._triggerChangeEvent();\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes all widgets from the grid.\r\n * @param removeDOM if `false` DOM elements won't be removed from the tree (Default? `true`).\r\n */\r\n public removeAll(removeDOM = true): GridStack {\r\n // always remove our DOM data (circular link) before list gets emptied and drag&drop permanently\r\n this.engine.nodes.forEach(n => {\r\n delete n.el.gridstackNode;\r\n GridStackDDI.get().remove(n.el);\r\n });\r\n this.engine.removeAll(removeDOM);\r\n this._triggerRemoveEvent();\r\n return this;\r\n }\r\n\r\n /**\r\n * Toggle the grid animation state. Toggles the `grid-stack-animate` class.\r\n * @param doAnimate if true the grid will animate.\r\n */\r\n public setAnimation(doAnimate: boolean): GridStack {\r\n if (doAnimate) {\r\n this.el.classList.add('grid-stack-animate');\r\n } else {\r\n this.el.classList.remove('grid-stack-animate');\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Toggle the grid static state, which permanently removes/add Drag&Drop support, unlike disable()/enable() that just turns it off/on.\r\n * Also toggle the grid-stack-static class.\r\n * @param val if true the grid become static.\r\n */\r\n public setStatic(val: boolean, updateClass = true): GridStack {\r\n if (this.opts.staticGrid === val) return this;\r\n this.opts.staticGrid = val;\r\n this._setupRemoveDrop();\r\n this._setupAcceptWidget();\r\n this.engine.nodes.forEach(n => this._prepareDragDropByNode(n)); // either delete or init Drag&drop\r\n if (updateClass) { this._setStaticClass(); }\r\n return this;\r\n }\r\n\r\n /**\r\n * Updates widget position/size and other info. Note: if you need to call this on all nodes, use load() instead which will update what changed.\r\n * @param els widget or selector of objects to modify (note: setting the same x,y for multiple items will be indeterministic and likely unwanted)\r\n * @param opt new widget options (x,y,w,h, etc..). Only those set will be updated.\r\n */\r\n public update(els: GridStackElement, opt: GridStackWidget): GridStack {\r\n\r\n // support legacy call for now ?\r\n if (arguments.length > 2) {\r\n console.warn('gridstack.ts: `update(el, x, y, w, h)` is deprecated. Use `update(el, {x, w, content, ...})`. It will be removed soon');\r\n // eslint-disable-next-line prefer-rest-params\r\n let a = arguments, i = 1;\r\n opt = { x:a[i++], y:a[i++], w:a[i++], h:a[i++] };\r\n return this.update(els, opt);\r\n }\r\n\r\n GridStack.getElements(els).forEach(el => {\r\n if (!el || !el.gridstackNode) return;\r\n let n = el.gridstackNode;\r\n let w = Utils.cloneDeep(opt); // make a copy we can modify in case they re-use it or multiple items\r\n delete w.autoPosition;\r\n\r\n // move/resize widget if anything changed\r\n let keys = ['x', 'y', 'w', 'h'];\r\n let m: GridStackWidget;\r\n if (keys.some(k => w[k] !== undefined && w[k] !== n[k])) {\r\n m = {};\r\n keys.forEach(k => {\r\n m[k] = (w[k] !== undefined) ? w[k] : n[k];\r\n delete w[k];\r\n });\r\n }\r\n // for a move as well IFF there is any min/max fields set\r\n if (!m && (w.minW || w.minH || w.maxW || w.maxH)) {\r\n m = {}; // will use node position but validate values\r\n }\r\n\r\n // check for content changing\r\n if (w.content) {\r\n let sub = el.querySelector('.grid-stack-item-content');\r\n if (sub && sub.innerHTML !== w.content) {\r\n sub.innerHTML = w.content;\r\n }\r\n delete w.content;\r\n }\r\n\r\n // any remaining fields are assigned, but check for dragging changes, resize constrain\r\n let changed = false;\r\n let ddChanged = false;\r\n for (const key in w) {\r\n if (key[0] !== '_' && n[key] !== w[key]) {\r\n n[key] = w[key];\r\n changed = true;\r\n ddChanged = ddChanged || (!this.opts.staticGrid && (key === 'noResize' || key === 'noMove' || key === 'locked'));\r\n }\r\n }\r\n\r\n // finally move the widget\r\n if (m) {\r\n this.engine.cleanNodes()\r\n .beginUpdate(n)\r\n .moveNode(n, m);\r\n this._updateContainerHeight();\r\n this._triggerChangeEvent();\r\n this.engine.endUpdate();\r\n }\r\n if (changed) { // move will only update x,y,w,h so update the rest too\r\n this._writeAttr(el, n);\r\n }\r\n if (ddChanged) {\r\n this._prepareDragDropByNode(n);\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * Updates the margins which will set all 4 sides at once - see `GridStackOptions.margin` for format options (CSS string format of 1,2,4 values or single number).\r\n * @param value margin value\r\n */\r\n public margin(value: numberOrString): GridStack {\r\n let isMultiValue = (typeof value === 'string' && value.split(' ').length > 1);\r\n // check if we can skip re-creating our CSS file... won't check if multi values (too much hassle)\r\n if (!isMultiValue) {\r\n let data = Utils.parseHeight(value);\r\n if (this.opts.marginUnit === data.unit && this.opts.margin === data.h) return;\r\n }\r\n // re-use existing margin handling\r\n this.opts.margin = value;\r\n this.opts.marginTop = this.opts.marginBottom = this.opts.marginLeft = this.opts.marginRight = undefined;\r\n this.initMargin();\r\n\r\n this._updateStyles(true); // true = force re-create\r\n\r\n return this;\r\n }\r\n\r\n /** returns current margin number value (undefined if 4 sides don't match) */\r\n public getMargin(): number { return this.opts.margin as number; }\r\n\r\n /**\r\n * Returns true if the height of the grid will be less than the vertical\r\n * constraint. Always returns true if grid doesn't have height constraint.\r\n * @param node contains x,y,w,h,auto-position options\r\n *\r\n * @example\r\n * if (grid.willItFit(newWidget)) {\r\n * grid.addWidget(newWidget);\r\n * } else {\r\n * alert('Not enough free space to place the widget');\r\n * }\r\n */\r\n public willItFit(node: GridStackWidget): boolean {\r\n // support legacy call for now\r\n if (arguments.length > 1) {\r\n console.warn('gridstack.ts: `willItFit(x,y,w,h,autoPosition)` is deprecated. Use `willItFit({x, y,...})`. It will be removed soon');\r\n // eslint-disable-next-line prefer-rest-params\r\n let a = arguments, i = 0,\r\n w: GridStackWidget = { x:a[i++], y:a[i++], w:a[i++], h:a[i++], autoPosition:a[i++] };\r\n return this.willItFit(w);\r\n }\r\n return this.engine.willItFit(node);\r\n }\r\n\r\n /** @internal */\r\n private _triggerChangeEvent(): GridStack {\r\n if (this.engine.batchMode) return this;\r\n let elements = this.engine.getDirtyNodes(true); // verify they really changed\r\n if (elements && elements.length) {\r\n if (!this._ignoreLayoutsNodeChange) {\r\n this.engine.layoutsNodesChange(elements);\r\n }\r\n this._triggerEvent('change', elements);\r\n }\r\n this.engine.saveInitial(); // we called, now reset initial values & dirty flags\r\n return this;\r\n }\r\n\r\n /** @internal */\r\n private _triggerAddEvent(): GridStack {\r\n if (this.engine.batchMode) return this;\r\n if (this.engine.addedNodes && this.engine.addedNodes.length > 0) {\r\n if (!this._ignoreLayoutsNodeChange) {\r\n this.engine.layoutsNodesChange(this.engine.addedNodes);\r\n }\r\n // prevent added nodes from also triggering 'change' event (which is called next)\r\n this.engine.addedNodes.forEach(n => { delete n._dirty; });\r\n this._triggerEvent('added', this.engine.addedNodes);\r\n this.engine.addedNodes = [];\r\n }\r\n return this;\r\n }\r\n\r\n /** @internal */\r\n public _triggerRemoveEvent(): GridStack {\r\n if (this.engine.batchMode) return this;\r\n if (this.engine.removedNodes && this.engine.removedNodes.length > 0) {\r\n this._triggerEvent('removed', this.engine.removedNodes);\r\n this.engine.removedNodes = [];\r\n }\r\n return this;\r\n }\r\n\r\n /** @internal */\r\n private _triggerEvent(name: string, data?: GridStackNode[]): GridStack {\r\n let event = data ? new CustomEvent(name, {bubbles: false, detail: data}) : new Event(name);\r\n this.el.dispatchEvent(event);\r\n return this;\r\n }\r\n\r\n /** @internal called to delete the current dynamic style sheet used for our layout */\r\n private _removeStylesheet(): GridStack {\r\n\r\n if (this._styles) {\r\n Utils.removeStylesheet(this._styles._id);\r\n delete this._styles;\r\n }\r\n return this;\r\n }\r\n\r\n /** @internal updated/create the CSS styles for row based layout and initial margin setting */\r\n private _updateStyles(forceUpdate = false, maxH?: number): GridStack {\r\n // call to delete existing one if we change cellHeight / margin\r\n if (forceUpdate) {\r\n this._removeStylesheet();\r\n }\r\n\r\n this._updateContainerHeight();\r\n\r\n // if user is telling us they will handle the CSS themselves by setting heights to 0. Do we need this opts really ??\r\n if (this.opts.cellHeight === 0) {\r\n return this;\r\n }\r\n\r\n let cellHeight = this.opts.cellHeight as number;\r\n let cellHeightUnit = this.opts.cellHeightUnit;\r\n let prefix = `.${this.opts._styleSheetClass} > .${this.opts.itemClass}`;\r\n\r\n // create one as needed\r\n if (!this._styles) {\r\n let id = 'gridstack-style-' + (Math.random() * 100000).toFixed();\r\n // insert style to parent (instead of 'head' by default) to support WebComponent\r\n let styleLocation = this.opts.styleInHead ? undefined : this.el.parentNode as HTMLElement;\r\n this._styles = Utils.createStylesheet(id, styleLocation);\r\n if (!this._styles) return this;\r\n this._styles._id = id;\r\n this._styles._max = 0;\r\n\r\n // these are done once only\r\n Utils.addCSSRule(this._styles, prefix, `min-height: ${cellHeight}${cellHeightUnit}`);\r\n // content margins\r\n let top: string = this.opts.marginTop + this.opts.marginUnit;\r\n let bottom: string = this.opts.marginBottom + this.opts.marginUnit;\r\n let right: string = this.opts.marginRight + this.opts.marginUnit;\r\n let left: string = this.opts.marginLeft + this.opts.marginUnit;\r\n let content = `${prefix} > .grid-stack-item-content`;\r\n let placeholder = `.${this.opts._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;\r\n Utils.addCSSRule(this._styles, content, `top: ${top}; right: ${right}; bottom: ${bottom}; left: ${left};`);\r\n Utils.addCSSRule(this._styles, placeholder, `top: ${top}; right: ${right}; bottom: ${bottom}; left: ${left};`);\r\n // resize handles offset (to match margin)\r\n Utils.addCSSRule(this._styles, `${prefix} > .ui-resizable-ne`, `right: ${right}`);\r\n Utils.addCSSRule(this._styles, `${prefix} > .ui-resizable-e`, `right: ${right}`);\r\n Utils.addCSSRule(this._styles, `${prefix} > .ui-resizable-se`, `right: ${right}; bottom: ${bottom}`);\r\n Utils.addCSSRule(this._styles, `${prefix} > .ui-resizable-nw`, `left: ${left}`);\r\n Utils.addCSSRule(this._styles, `${prefix} > .ui-resizable-w`, `left: ${left}`);\r\n Utils.addCSSRule(this._styles, `${prefix} > .ui-resizable-sw`, `left: ${left}; bottom: ${bottom}`);\r\n }\r\n\r\n // now update the height specific fields\r\n maxH = maxH || this._styles._max;\r\n if (maxH > this._styles._max) {\r\n let getHeight = (rows: number): string => (cellHeight * rows) + cellHeightUnit;\r\n for (let i = this._styles._max + 1; i <= maxH; i++) { // start at 1\r\n let h: string = getHeight(i);\r\n Utils.addCSSRule(this._styles, `${prefix}[gs-y=\"${i-1}\"]`, `top: ${getHeight(i-1)}`); // start at 0\r\n Utils.addCSSRule(this._styles, `${prefix}[gs-h=\"${i}\"]`, `height: ${h}`);\r\n Utils.addCSSRule(this._styles, `${prefix}[gs-min-h=\"${i}\"]`, `min-height: ${h}`);\r\n Utils.addCSSRule(this._styles, `${prefix}[gs-max-h=\"${i}\"]`, `max-height: ${h}`);\r\n }\r\n this._styles._max = maxH;\r\n }\r\n return this;\r\n }\r\n\r\n /** @internal */\r\n private _updateContainerHeight(): GridStack {\r\n if (!this.engine || this.engine.batchMode) return this;\r\n let row = this.getRow() + this._extraDragRow; // checks for minRow already\r\n // check for css min height\r\n // Note: we don't handle %,rem correctly so comment out, beside we don't need need to create un-necessary\r\n // rows as the CSS will make us bigger than our set height if needed... not sure why we had this.\r\n // let cssMinHeight = parseInt(getComputedStyle(this.el)['min-height']);\r\n // if (cssMinHeight > 0) {\r\n // let minRow = Math.round(cssMinHeight / this.getCellHeight(true));\r\n // if (row < minRow) {\r\n // row = minRow;\r\n // }\r\n // }\r\n this.el.setAttribute('gs-current-row', String(row));\r\n if (row === 0) {\r\n this.el.style.removeProperty('height');\r\n return this;\r\n }\r\n let cellHeight = this.opts.cellHeight as number;\r\n let unit = this.opts.cellHeightUnit;\r\n if (!cellHeight) return this;\r\n this.el.style.height = row * cellHeight + unit;\r\n return this;\r\n }\r\n\r\n /** @internal */\r\n private _prepareElement(el: GridItemHTMLElement, triggerAddEvent = false, node?: GridStackNode): GridStack {\r\n if (!node) {\r\n el.classList.add(this.opts.itemClass);\r\n node = this._readAttr(el);\r\n }\r\n el.gridstackNode = node;\r\n node.el = el;\r\n node.grid = this;\r\n let copy = {...node};\r\n node = this.engine.addNode(node, triggerAddEvent);\r\n // write node attr back in case there was collision or we have to fix bad values during addNode()\r\n if (!Utils.same(node, copy)) {\r\n this._writeAttr(el, node);\r\n }\r\n this._prepareDragDropByNode(node);\r\n return this;\r\n }\r\n\r\n /** @internal call to write position x,y,w,h attributes back to element */\r\n private _writePosAttr(el: HTMLElement, n: GridStackPosition): GridStack {\r\n if (n.x !== undefined && n.x !== null) { el.setAttribute('gs-x', String(n.x)); }\r\n if (n.y !== undefined && n.y !== null) { el.setAttribute('gs-y', String(n.y)); }\r\n if (n.w) { el.setAttribute('gs-w', String(n.w)); }\r\n if (n.h) { el.setAttribute('gs-h', String(n.h)); }\r\n return this;\r\n }\r\n\r\n /** @internal call to write any default attributes back to element */\r\n private _writeAttr(el: HTMLElement, node: GridStackWidget): GridStack {\r\n if (!node) return this;\r\n this._writePosAttr(el, node);\r\n\r\n let attrs /*: GridStackWidget but strings */ = { // remaining attributes\r\n autoPosition: 'gs-auto-position',\r\n minW: 'gs-min-w',\r\n minH: 'gs-min-h',\r\n maxW: 'gs-max-w',\r\n maxH: 'gs-max-h',\r\n noResize: 'gs-no-resize',\r\n noMove: 'gs-no-move',\r\n locked: 'gs-locked',\r\n id: 'gs-id',\r\n resizeHandles: 'gs-resize-handles'\r\n };\r\n for (const key in attrs) {\r\n if (node[key]) { // 0 is valid for x,y only but done above already and not in list anyway\r\n el.setAttribute(attrs[key], String(node[key]));\r\n } else {\r\n el.removeAttribute(attrs[key]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /** @internal call to read any default attributes from element */\r\n private _readAttr(el: HTMLElement): GridStackWidget {\r\n let node: GridStackNode = {};\r\n node.x = Utils.toNumber(el.getAttribute('gs-x'));\r\n node.y = Utils.toNumber(el.getAttribute('gs-y'));\r\n node.w = Utils.toNumber(el.getAttribute('gs-w'));\r\n node.h = Utils.toNumber(el.getAttribute('gs-h'));\r\n node.maxW = Utils.toNumber(el.getAttribute('gs-max-w'));\r\n node.minW = Utils.toNumber(el.getAttribute('gs-min-w'));\r\n node.maxH = Utils.toNumber(el.getAttribute('gs-max-h'));\r\n node.minH = Utils.toNumber(el.getAttribute('gs-min-h'));\r\n node.autoPosition = Utils.toBool(el.getAttribute('gs-auto-position'));\r\n node.noResize = Utils.toBool(el.getAttribute('gs-no-resize'));\r\n node.noMove = Utils.toBool(el.getAttribute('gs-no-move'));\r\n node.locked = Utils.toBool(el.getAttribute('gs-locked'));\r\n node.resizeHandles = el.getAttribute('gs-resize-handles');\r\n node.id = el.getAttribute('gs-id');\r\n\r\n // remove any key not found (null or false which is default)\r\n for (const key in node) {\r\n if (!node.hasOwnProperty(key)) return;\r\n if (!node[key] && node[key] !== 0) { // 0 can be valid value (x,y only really)\r\n delete node[key];\r\n }\r\n }\r\n\r\n return node;\r\n }\r\n\r\n /** @internal */\r\n private _setStaticClass(): GridStack {\r\n let classes = ['grid-stack-static'];\r\n\r\n if (this.opts.staticGrid) {\r\n this.el.classList.add(...classes);\r\n this.el.setAttribute('gs-static', 'true');\r\n } else {\r\n this.el.classList.remove(...classes);\r\n this.el.removeAttribute('gs-static');\r\n\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * called when we are being resized by the window - check if the one Column Mode needs to be turned on/off\r\n * and remember the prev columns we used, or get our count from parent, as well as check for auto cell height (square)\r\n */\r\n public onParentResize(): GridStack {\r\n if (!this.el || !this.el.clientWidth) return; // return if we're gone or no size yet (will get called again)\r\n let changedColumn = false;\r\n\r\n // see if we're nested and take our column count from our parent....\r\n if (this._autoColumn && this.opts._isNested) {\r\n if (this.opts.column !== this.opts._isNested.w) {\r\n changedColumn = true;\r\n this.column(this.opts._isNested.w, 'none');\r\n }\r\n } else {\r\n // else check for 1 column in/out behavior\r\n let oneColumn = !this.opts.disableOneColumnMode && this.el.clientWidth <= this.opts.minWidth;\r\n if ((this.opts.column === 1) !== oneColumn) {\r\n changedColumn = true;\r\n if (this.opts.animate) { this.setAnimation(false); } // 1 <-> 12 is too radical, turn off animation\r\n this.column(oneColumn ? 1 : this._prevColumn);\r\n if (this.opts.animate) { this.setAnimation(true); }\r\n }\r\n }\r\n\r\n // make the cells content square again\r\n if (this._isAutoCellHeight) {\r\n if (!changedColumn && this.opts.cellHeightThrottle) {\r\n if (!this._cellHeightThrottle) {\r\n this._cellHeightThrottle = Utils.throttle(() => this.cellHeight(), this.opts.cellHeightThrottle);\r\n }\r\n this._cellHeightThrottle();\r\n } else {\r\n // immediate update if we've changed column count or have no threshold\r\n this.cellHeight();\r\n }\r\n }\r\n\r\n // finally update any nested grids\r\n this.engine.nodes.forEach(n => {\r\n if (n.subGrid) {(n.subGrid as GridStack).onParentResize()}\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /** add or remove the window size event handler */\r\n private _updateWindowResizeEvent(forceRemove = false): GridStack {\r\n // only add event if we're not nested (parent will call us) and we're auto sizing cells or supporting oneColumn (i.e. doing work)\r\n const workTodo = (this._isAutoCellHeight || !this.opts.disableOneColumnMode) && !this.opts._isNested;\r\n\r\n if (!forceRemove && workTodo && !this._windowResizeBind) {\r\n this._windowResizeBind = this.onParentResize.bind(this); // so we can properly remove later\r\n window.addEventListener('resize', this._windowResizeBind);\r\n } else if ((forceRemove || !workTodo) && this._windowResizeBind) {\r\n window.removeEventListener('resize', this._windowResizeBind);\r\n delete this._windowResizeBind; // remove link to us so we can free\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** @internal convert a potential selector into actual element */\r\n public static getElement(els: GridStackElement = '.grid-stack-item'): GridItemHTMLElement { return Utils.getElement(els) }\r\n /** @internal */\r\n public static getElements(els: GridStackElement = '.grid-stack-item'): GridItemHTMLElement[] { return Utils.getElements(els) }\r\n /** @internal */\r\n public static getGridElement(els: GridStackElement): GridHTMLElement { return GridStack.getElement(els) }\r\n /** @internal */\r\n public static getGridElements(els: string): GridHTMLElement[] { return Utils.getElements(els) }\r\n\r\n /** @internal initialize margin top/bottom/left/right and units */\r\n private initMargin(): GridStack {\r\n\r\n let data: HeightData;\r\n let margin = 0;\r\n\r\n // support passing multiple values like CSS (ex: '5px 10px 0 20px')\r\n let margins: string[] = [];\r\n if (typeof this.opts.margin === 'string') {\r\n margins = this.opts.margin.split(' ')\r\n }\r\n if (margins.length === 2) { // top/bot, left/right like CSS\r\n this.opts.marginTop = this.opts.marginBottom = margins[0];\r\n this.opts.marginLeft = this.opts.marginRight = margins[1];\r\n } else if (margins.length === 4) { // Clockwise like CSS\r\n this.opts.marginTop = margins[0];\r\n this.opts.marginRight = margins[1];\r\n this.opts.marginBottom = margins[2];\r\n this.opts.marginLeft = margins[3];\r\n } else {\r\n data = Utils.parseHeight(this.opts.margin);\r\n this.opts.marginUnit = data.unit;\r\n margin = this.opts.margin = data.h;\r\n }\r\n\r\n // see if top/bottom/left/right need to be set as well\r\n if (this.opts.marginTop === undefined) {\r\n this.opts.marginTop = margin;\r\n } else {\r\n data = Utils.parseHeight(this.opts.marginTop);\r\n this.opts.marginTop = data.h;\r\n delete this.opts.margin;\r\n }\r\n\r\n if (this.opts.marginBottom === undefined) {\r\n this.opts.marginBottom = margin;\r\n } else {\r\n data = Utils.parseHeight(this.opts.marginBottom);\r\n this.opts.marginBottom = data.h;\r\n delete this.opts.margin;\r\n }\r\n\r\n if (this.opts.marginRight === undefined) {\r\n this.opts.marginRight = margin;\r\n } else {\r\n data = Utils.parseHeight(this.opts.marginRight);\r\n this.opts.marginRight = data.h;\r\n delete this.opts.margin;\r\n }\r\n\r\n if (this.opts.marginLeft === undefined) {\r\n this.opts.marginLeft = margin;\r\n } else {\r\n data = Utils.parseHeight(this.opts.marginLeft);\r\n this.opts.marginLeft = data.h;\r\n delete this.opts.margin;\r\n }\r\n this.opts.marginUnit = data.unit; // in case side were spelled out, use those units instead...\r\n if (this.opts.marginTop === this.opts.marginBottom && this.opts.marginLeft === this.opts.marginRight && this.opts.marginTop === this.opts.marginRight) {\r\n this.opts.margin = this.opts.marginTop; // makes it easier to check for no-ops in setMargin()\r\n }\r\n return this;\r\n }\r\n\r\n /*\r\n * drag&drop empty stubs that will be implemented in gridstack-dd.ts for non static grid\r\n * so we don't incur the load unless needed.\r\n * NOTE: had to make those methods public in order to define them else as\r\n * GridStack.prototype._setupAcceptWidget = function()\r\n * maybe there is a better way ????\r\n */\r\n /* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\n /**\r\n * call to setup dragging in from the outside (say toolbar), by specifying the class selection and options.\r\n * Called during GridStack.init() as options, but can also be called directly (last param are cached) in case the toolbar\r\n * is dynamically create and needs to change later.\r\n * @param dragIn string selector (ex: '.sidebar .grid-stack-item')\r\n * @param dragInOptions options - see DDDragInOpt. (default: {revert: 'invalid', handle: '.grid-stack-item-content', scroll: false, appendTo: 'body'}\r\n **/\r\n public static setupDragIn(dragIn?: string, dragInOptions?: DDDragInOpt): void { /* implemented in gridstack-dd.ts */ }\r\n\r\n /**\r\n * Enables/Disables dragging by the user of specific grid element. If you want all items, and have it affect future items, use enableMove() instead. No-op for static grids.\r\n * IF you are looking to prevent an item from moving (due to being pushed around by another during collision) use locked property instead.\r\n * @param els widget or selector to modify.\r\n * @param val if true widget will be draggable.\r\n */\r\n public movable(els: GridStackElement, val: boolean): GridStack { return this }\r\n /**\r\n * Enables/Disables user resizing of specific grid element. If you want all items, and have it affect future items, use enableResize() instead. No-op for static grids.\r\n * @param els widget or selector to modify\r\n * @param val if true widget will be resizable.\r\n */\r\n public resizable(els: GridStackElement, val: boolean): GridStack { return this }\r\n /**\r\n * Temporarily disables widgets moving/resizing.\r\n * If you want a more permanent way (which freezes up resources) use `setStatic(true)` instead.\r\n * Note: no-op for static grid\r\n * This is a shortcut for:\r\n * @example\r\n * grid.enableMove(false);\r\n * grid.enableResize(false);\r\n */\r\n public disable(): GridStack { return this }\r\n /**\r\n * Re-enables widgets moving/resizing - see disable().\r\n * Note: no-op for static grid.\r\n * This is a shortcut for:\r\n * @example\r\n * grid.enableMove(true);\r\n * grid.enableResize(true);\r\n */\r\n public enable(): GridStack { return this }\r\n /**\r\n * Enables/disables widget moving. No-op for static grids.\r\n */\r\n public enableMove(doEnable: boolean): GridStack { return this }\r\n /**\r\n * Enables/disables widget resizing. No-op for static grids.\r\n */\r\n public enableResize(doEnable: boolean): GridStack { return this }\r\n\r\n /** @internal called to add drag over support to support widgets */\r\n public _setupAcceptWidget(): GridStack { return this }\r\n /** @internal called to setup a trash drop zone if the user specifies it */\r\n public _setupRemoveDrop(): GridStack { return this }\r\n /** @internal prepares the element for drag&drop **/\r\n public _prepareDragDropByNode(node: GridStackNode): GridStack { return this }\r\n /** @internal handles actual drag/resize start **/\r\n public _onStartMoving(el: GridItemHTMLElement, event: Event, ui: DDUIData, node: GridStackNode, cellWidth: number, cellHeight: number): void { return }\r\n /** @internal handles actual drag/resize **/\r\n public _dragOrResize(el: GridItemHTMLElement, event: Event, ui: DDUIData, node: GridStackNode, cellWidth: number, cellHeight: number): void { return }\r\n /** @internal called when a node leaves our area (mouse out or shape outside) **/\r\n public _leave(el: GridItemHTMLElement, helper?: GridItemHTMLElement): void { return }\r\n}\r\n","// gridstack-dd-jqueryui.ts 5.0\r\n// Copyright (c) 2021 Alain Dumesny - see root license\r\nimport { GridStackElement } from '../gridstack';\r\nimport { GridStackDD, DDOpts, DDKey, DDDropOpt, DDCallback, DDValue } from '../gridstack-dd';\r\nimport { GridItemHTMLElement, DDDragInOpt } from '../types';\r\n\r\n// export jq symbols see\r\n// https://stackoverflow.com/questions/35345760/importing-jqueryui-with-typescript-and-requirejs\r\n// https://stackoverflow.com/questions/33998262/jquery-ui-and-webpack-how-to-manage-it-into-module\r\n//\r\n// Note: user should be able to bring their own by changing their webpack aliases like\r\n// alias: {\r\n// 'jquery': 'gridstack/dist/jq/jquery.js',\r\n// 'jquery-ui': 'gridstack/dist/jq/jquery-ui.js',\r\n// 'jquery.ui': 'gridstack/dist/jq/jquery-ui.js',\r\n// 'jquery.ui.touch-punch': 'gridstack/dist/jq/jquery.ui.touch-punch.js',\r\n// },\r\nimport * as $ from 'jquery'; // compile this in... having issues TS/ES6 app would include instead\r\nexport { $ };\r\nimport 'jquery-ui';\r\nimport 'jquery.ui.touch-punch'; // include for touch mobile devices\r\n\r\n// export our base class (what user should use) and all associated types\r\nexport * from '../gridstack-dd';\r\n\r\n/**\r\n * legacy Jquery-ui based drag'n'drop plugin.\r\n */\r\nexport class GridStackDDJQueryUI extends GridStackDD {\r\n\r\n public resizable(el: GridItemHTMLElement, opts: DDOpts, key?: DDKey, value?: DDValue): GridStackDD {\r\n let $el: JQuery = $(el);\r\n if (opts === 'enable') {\r\n $el.resizable().resizable(opts);\r\n } else if (opts === 'disable' || opts === 'destroy') {\r\n if ($el.data('ui-resizable')) { // error to call destroy if not there\r\n $el.resizable(opts);\r\n }\r\n } else if (opts === 'option') {\r\n $el.resizable(opts, key, value);\r\n } else {\r\n const grid = el.gridstackNode.grid;\r\n let handles = $el.data('gs-resize-handles') ? $el.data('gs-resize-handles') : grid.opts.resizable.handles;\r\n $el.resizable({\r\n ...grid.opts.resizable,\r\n ...{ handles: handles },\r\n ...{\r\n start: opts.start, // || function() {},\r\n stop: opts.stop, // || function() {},\r\n resize: opts.resize // || function() {}\r\n }\r\n });\r\n }\r\n return this;\r\n }\r\n\r\n public draggable(el: GridItemHTMLElement, opts: DDOpts, key?: DDKey, value?: DDValue): GridStackDD {\r\n let $el: JQuery = $(el);\r\n if (opts === 'enable') {\r\n $el.draggable().draggable('enable');\r\n } else if (opts === 'disable' || opts === 'destroy') {\r\n if ($el.data('ui-draggable')) { // error to call destroy if not there\r\n $el.draggable(opts);\r\n }\r\n } else if (opts === 'option') {\r\n $el.draggable(opts, key, value);\r\n } else {\r\n const grid = el.gridstackNode.grid;\r\n $el.draggable({...grid.opts.draggable, ...{ // was using $.extend()\r\n containment: (grid.opts._isNested && !grid.opts.dragOut) ?\r\n $(grid.el).parent() : (grid.opts.draggable.containment || null),\r\n start: opts.start, // || function() {},\r\n stop: opts.stop, // || function() {},\r\n drag: opts.drag // || function() {}\r\n }});\r\n }\r\n return this;\r\n }\r\n\r\n public dragIn(el: GridStackElement, opts: DDDragInOpt): GridStackDD {\r\n let $el: JQuery = $(el as any); // workaround Type 'string' is not assignable to type 'PlainObject' - see https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29312\r\n $el.draggable(opts);\r\n return this;\r\n }\r\n\r\n public droppable(el: GridItemHTMLElement, opts: DDOpts | DDDropOpt, key?: DDKey, value?: DDValue): GridStackDD {\r\n let $el: JQuery = $(el);\r\n if (typeof opts.accept === 'function' && !opts._accept) {\r\n // convert jquery event to generic element\r\n opts._accept = opts.accept;\r\n opts.accept = ($el: JQuery) => opts._accept($el.get(0));\r\n }\r\n if (opts === 'disable' || opts === 'destroy') {\r\n if ($el.data('ui-droppable')) { // error to call destroy if not there\r\n $el.droppable(opts);\r\n }\r\n } else {\r\n $el.droppable(opts, key, value);\r\n }\r\n return this;\r\n }\r\n\r\n public isDroppable(el: HTMLElement): boolean {\r\n let $el: JQuery = $(el);\r\n return Boolean($el.data('ui-droppable'));\r\n }\r\n\r\n public isDraggable(el: HTMLElement): boolean {\r\n let $el: JQuery = $(el);\r\n return Boolean($el.data('ui-draggable'));\r\n }\r\n\r\n public isResizable(el: HTMLElement): boolean {\r\n let $el: JQuery = $(el);\r\n return Boolean($el.data('ui-resizable'));\r\n }\r\n\r\n public on(el: GridItemHTMLElement, name: string, callback: DDCallback): GridStackDD {\r\n let $el: JQuery = $(el);\r\n $el.on(name, (event, ui) => { return callback(event as any, ui.draggable ? ui.draggable[0] : event.target, ui.helper ? ui.helper[0] : null) });\r\n return this;\r\n }\r\n\r\n public off(el: GridItemHTMLElement, name: string): GridStackDD {\r\n let $el: JQuery = $(el);\r\n $el.off(name);\r\n return this;\r\n }\r\n}\r\n\r\n// finally register ourself\r\nGridStackDD.registerPlugin(GridStackDDJQueryUI);\r\n","/**\r\n * utils.ts 5.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { GridStackElement, GridStackNode, GridStackOptions, numberOrString, GridStackPosition, GridStackWidget } from './types';\r\n\r\nexport interface HeightData {\r\n h: number;\r\n unit: string;\r\n}\r\n\r\n/** checks for obsolete method names */\r\n// eslint-disable-next-line\r\nexport function obsolete(self, f, oldName: string, newName: string, rev: string): (...args: any[]) => any {\r\n let wrapper = (...args) => {\r\n console.warn('gridstack.js: Function `' + oldName + '` is deprecated in ' + rev + ' and has been replaced ' +\r\n 'with `' + newName + '`. It will be **completely** removed in v1.0');\r\n return f.apply(self, args);\r\n }\r\n wrapper.prototype = f.prototype;\r\n return wrapper;\r\n}\r\n\r\n/** checks for obsolete grid options (can be used for any fields, but msg is about options) */\r\nexport function obsoleteOpts(opts: GridStackOptions, oldName: string, newName: string, rev: string): void {\r\n if (opts[oldName] !== undefined) {\r\n opts[newName] = opts[oldName];\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **completely** removed in v1.0');\r\n }\r\n}\r\n\r\n/** checks for obsolete grid options which are gone */\r\nexport function obsoleteOptsDel(opts: GridStackOptions, oldName: string, rev: string, info: string): void {\r\n if (opts[oldName] !== undefined) {\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + info);\r\n }\r\n}\r\n\r\n/** checks for obsolete Jquery element attributes */\r\nexport function obsoleteAttr(el: HTMLElement, oldName: string, newName: string, rev: string): void {\r\n let oldAttr = el.getAttribute(oldName);\r\n if (oldAttr !== null) {\r\n el.setAttribute(newName, oldAttr);\r\n console.warn('gridstack.js: attribute `' + oldName + '`=' + oldAttr + ' is deprecated on this object in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **completely** removed in v1.0');\r\n }\r\n}\r\n\r\n/**\r\n * Utility methods\r\n */\r\nexport class Utils {\r\n\r\n /** convert a potential selector into actual list of html elements */\r\n static getElements(els: GridStackElement): HTMLElement[] {\r\n if (typeof els === 'string') {\r\n let list = document.querySelectorAll(els);\r\n if (!list.length && els[0] !== '.' && els[0] !== '#') {\r\n list = document.querySelectorAll('.' + els);\r\n if (!list.length) { list = document.querySelectorAll('#' + els) }\r\n }\r\n return Array.from(list) as HTMLElement[];\r\n }\r\n return [els];\r\n }\r\n\r\n /** convert a potential selector into actual single element */\r\n static getElement(els: GridStackElement): HTMLElement {\r\n if (typeof els === 'string') {\r\n if (!els.length) return null;\r\n if (els[0] === '#') {\r\n return document.getElementById(els.substring(1));\r\n }\r\n if (els[0] === '.' || els[0] === '[') {\r\n return document.querySelector(els);\r\n }\r\n\r\n // if we start with a digit, assume it's an id (error calling querySelector('#1')) as class are not valid CSS\r\n if(!isNaN(+els[0])) { // start with digit\r\n return document.getElementById(els);\r\n }\r\n\r\n // finally try string, then id then class\r\n let el = document.querySelector(els);\r\n if (!el) { el = document.getElementById(els) }\r\n if (!el) { el = document.querySelector('.' + els) }\r\n return el as HTMLElement;\r\n }\r\n return els;\r\n }\r\n\r\n /** returns true if a and b overlap */\r\n static isIntercepted(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return !(a.y >= b.y + b.h || a.y + a.h <= b.y || a.x + a.w <= b.x || a.x >= b.x + b.w);\r\n }\r\n\r\n /** returns true if a and b touch edges or corners */\r\n static isTouching(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return Utils.isIntercepted(a, {x: b.x-0.5, y: b.y-0.5, w: b.w+1, h: b.h+1})\r\n }\r\n /**\r\n * Sorts array of nodes\r\n * @param nodes array to sort\r\n * @param dir 1 for asc, -1 for desc (optional)\r\n * @param width width of the grid. If undefined the width will be calculated automatically (optional).\r\n **/\r\n static sort(nodes: GridStackNode[], dir?: -1 | 1, column?: number): GridStackNode[] {\r\n column = column || nodes.reduce((col, n) => Math.max(n.x + n.w, col), 0) || 12;\r\n if (dir === -1)\r\n return nodes.sort((a, b) => (b.x + b.y * column)-(a.x + a.y * column));\r\n else\r\n return nodes.sort((b, a) => (b.x + b.y * column)-(a.x + a.y * column));\r\n }\r\n\r\n /**\r\n * creates a style sheet with style id under given parent\r\n * @param id will set the 'gs-style-id' attribute to that id\r\n * @param parent to insert the stylesheet as first child,\r\n * if none supplied it will be appended to the document head instead.\r\n */\r\n static createStylesheet(id: string, parent?: HTMLElement): CSSStyleSheet {\r\n let style: HTMLStyleElement = document.createElement('style');\r\n style.setAttribute('type', 'text/css');\r\n style.setAttribute('gs-style-id', id);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if ((style as any).styleSheet) { // TODO: only CSSImportRule have that and different beast ??\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (style as any).styleSheet.cssText = '';\r\n } else {\r\n style.appendChild(document.createTextNode('')); // WebKit hack\r\n }\r\n if (!parent) {\r\n // default to head\r\n parent = document.getElementsByTagName('head')[0];\r\n parent.appendChild(style);\r\n } else {\r\n parent.insertBefore(style, parent.firstChild);\r\n }\r\n return style.sheet as CSSStyleSheet;\r\n }\r\n\r\n /** removed the given stylesheet id */\r\n static removeStylesheet(id: string): void {\r\n let el = document.querySelector('STYLE[gs-style-id=' + id + ']');\r\n if (el && el.parentNode) el.remove();\r\n }\r\n\r\n /** inserts a CSS rule */\r\n static addCSSRule(sheet: CSSStyleSheet, selector: string, rules: string): void {\r\n if (typeof sheet.addRule === 'function') {\r\n sheet.addRule(selector, rules);\r\n } else if (typeof sheet.insertRule === 'function') {\r\n sheet.insertRule(`${selector}{${rules}}`);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n static toBool(v: unknown): boolean {\r\n if (typeof v === 'boolean') {\r\n return v;\r\n }\r\n if (typeof v === 'string') {\r\n v = v.toLowerCase();\r\n return !(v === '' || v === 'no' || v === 'false' || v === '0');\r\n }\r\n return Boolean(v);\r\n }\r\n\r\n static toNumber(value: null | string): number {\r\n return (value === null || value.length === 0) ? undefined : Number(value);\r\n }\r\n\r\n static parseHeight(val: numberOrString): HeightData {\r\n let h: number;\r\n let unit = 'px';\r\n if (typeof val === 'string') {\r\n let match = val.match(/^(-[0-9]+\\.[0-9]+|[0-9]*\\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%)?$/);\r\n if (!match) {\r\n throw new Error('Invalid height');\r\n }\r\n unit = match[2] || 'px';\r\n h = parseFloat(match[1]);\r\n } else {\r\n h = val;\r\n }\r\n return { h, unit };\r\n }\r\n\r\n /** copies unset fields in target to use the given default sources values */\r\n // eslint-disable-next-line\r\n static defaults(target, ...sources): {} {\r\n\r\n sources.forEach(source => {\r\n for (const key in source) {\r\n if (!source.hasOwnProperty(key)) return;\r\n if (target[key] === null || target[key] === undefined) {\r\n target[key] = source[key];\r\n } else if (typeof source[key] === 'object' && typeof target[key] === 'object') {\r\n // property is an object, recursively add it's field over... #1373\r\n this.defaults(target[key], source[key]);\r\n }\r\n }\r\n });\r\n\r\n return target;\r\n }\r\n\r\n /** given 2 objects return true if they have the same values. Checks for Object {} having same fields and values (just 1 level down) */\r\n static same(a: unknown, b: unknown): boolean {\r\n if (typeof a !== 'object') return a == b;\r\n if (typeof a !== typeof b) return false;\r\n // else we have object, check just 1 level deep for being same things...\r\n if (Object.keys(a).length !== Object.keys(b).length) return false;\r\n for (const key in a) {\r\n if (a[key] !== b[key]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** copies over b size & position (GridStackPosition), and possibly min/max as well */\r\n static copyPos(a: GridStackWidget, b: GridStackWidget, minMax = false): GridStackWidget {\r\n a.x = b.x;\r\n a.y = b.y;\r\n a.w = b.w;\r\n a.h = b.h;\r\n if (!minMax) return a;\r\n if (b.minW) a.minW = b.minW;\r\n if (b.minH) a.minH = b.minH;\r\n if (b.maxW) a.maxW = b.maxW;\r\n if (b.maxH) a.maxH = b.maxH;\r\n return a;\r\n }\r\n\r\n /** true if a and b has same size & position */\r\n static samePos(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return a && b && a.x === b.x && a.y === b.y && a.w === b.w && a.h === b.h;\r\n }\r\n\r\n /** removes field from the first object if same as the second objects (like diffing) and internal '_' for saving */\r\n static removeInternalAndSame(a: unknown, b: unknown):void {\r\n if (typeof a !== 'object' || typeof b !== 'object') return;\r\n for (let key in a) {\r\n let val = a[key];\r\n if (key[0] === '_' || val === b[key]) {\r\n delete a[key]\r\n } else if (val && typeof val === 'object' && b[key] !== undefined) {\r\n for (let i in val) {\r\n if (val[i] === b[key][i] || i[0] === '_') { delete val[i] }\r\n }\r\n if (!Object.keys(val).length) { delete a[key] }\r\n }\r\n }\r\n }\r\n\r\n /** return the closest parent (or itself) matching the given class */\r\n static closestByClass(el: HTMLElement, name: string): HTMLElement {\r\n while (el) {\r\n if (el.classList.contains(name)) return el;\r\n el = el.parentElement\r\n }\r\n return null;\r\n }\r\n\r\n /** delay calling the given function for given delay, preventing new calls from happening while waiting */\r\n static throttle(func: () => void, delay: number): () => void {\r\n let isWaiting = false;\r\n return (...args) => {\r\n if (!isWaiting) {\r\n isWaiting = true;\r\n setTimeout(() => { func(...args); isWaiting = false; }, delay);\r\n }\r\n }\r\n }\r\n\r\n static removePositioningStyles(el: HTMLElement): void {\r\n let style = el.style;\r\n if (style.position) {\r\n style.removeProperty('position');\r\n }\r\n if (style.left) {\r\n style.removeProperty('left');\r\n }\r\n if (style.top) {\r\n style.removeProperty('top');\r\n }\r\n if (style.width) {\r\n style.removeProperty('width');\r\n }\r\n if (style.height) {\r\n style.removeProperty('height');\r\n }\r\n }\r\n\r\n /** @internal returns the passed element if scrollable, else the closest parent that will, up to the entire document scrolling element */\r\n static getScrollElement(el?: HTMLElement): HTMLElement {\r\n if (!el) return document.scrollingElement as HTMLElement || document.documentElement; // IE support\r\n const style = getComputedStyle(el);\r\n const overflowRegex = /(auto|scroll)/;\r\n\r\n if (overflowRegex.test(style.overflow + style.overflowY)) {\r\n return el;\r\n } else {\r\n return this.getScrollElement(el.parentElement);\r\n }\r\n }\r\n\r\n /** @internal */\r\n static updateScrollPosition(el: HTMLElement, position: {top: number}, distance: number): void {\r\n // is widget in view?\r\n let rect = el.getBoundingClientRect();\r\n let innerHeightOrClientHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n if (rect.top < 0 ||\r\n rect.bottom > innerHeightOrClientHeight\r\n ) {\r\n // set scrollTop of first parent that scrolls\r\n // if parent is larger than el, set as low as possible\r\n // to get entire widget on screen\r\n let offsetDiffDown = rect.bottom - innerHeightOrClientHeight;\r\n let offsetDiffUp = rect.top;\r\n let scrollEl = this.getScrollElement(el);\r\n if (scrollEl !== null) {\r\n let prevScroll = scrollEl.scrollTop;\r\n if (rect.top < 0 && distance < 0) {\r\n // moving up\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += Math.abs(offsetDiffUp) > Math.abs(distance) ? distance : offsetDiffUp;\r\n }\r\n } else if (distance > 0) {\r\n // moving down\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += offsetDiffDown > distance ? distance : offsetDiffDown;\r\n }\r\n }\r\n // move widget y by amount scrolled\r\n position.top += scrollEl.scrollTop - prevScroll;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal Function used to scroll the page.\r\n *\r\n * @param event `MouseEvent` that triggers the resize\r\n * @param el `HTMLElement` that's being resized\r\n * @param distance Distance from the V edges to start scrolling\r\n */\r\n static updateScrollResize(event: MouseEvent, el: HTMLElement, distance: number): void {\r\n const scrollEl = this.getScrollElement(el);\r\n const height = scrollEl.clientHeight;\r\n // #1727 event.clientY is relative to viewport, so must compare this against position of scrollEl getBoundingClientRect().top\r\n // #1745 Special situation if scrollEl is document 'html': here browser spec states that\r\n // clientHeight is height of viewport, but getBoundingClientRect() is rectangle of html element;\r\n // this discrepancy arises because in reality scrollbar is attached to viewport, not html element itself.\r\n const offsetTop = (scrollEl === this.getScrollElement()) ? 0 : scrollEl.getBoundingClientRect().top;\r\n const pointerPosY = event.clientY - offsetTop;\r\n const top = pointerPosY < distance;\r\n const bottom = pointerPosY > height - distance;\r\n\r\n if (top) {\r\n // This also can be done with a timeout to keep scrolling while the mouse is\r\n // in the scrolling zone. (will have smoother behavior)\r\n scrollEl.scrollBy({ behavior: 'smooth', top: pointerPosY - distance});\r\n } else if (bottom) {\r\n scrollEl.scrollBy({ behavior: 'smooth', top: distance - (height - pointerPosY)});\r\n }\r\n }\r\n\r\n /** single level clone, returning a new object with same top fields. This will share sub objects and arrays */\r\n static clone(obj: T): T {\r\n if (obj === null || obj === undefined || typeof(obj) !== 'object') {\r\n return obj;\r\n }\r\n // return Object.assign({}, obj);\r\n if (obj instanceof Array) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return [...obj] as any;\r\n }\r\n return {...obj};\r\n }\r\n\r\n /**\r\n * Recursive clone version that returns a full copy, checking for nested objects and arrays ONLY.\r\n * Note: this will use as-is any key starting with double __ (and not copy inside) some lib have circular dependencies.\r\n */\r\n static cloneDeep(obj: T): T {\r\n // return JSON.parse(JSON.stringify(obj)); // doesn't work with date format ?\r\n const ret = Utils.clone(obj);\r\n for (const key in ret) {\r\n // NOTE: we don't support function/circular dependencies so skip those properties for now...\r\n if (ret.hasOwnProperty(key) && typeof(ret[key]) === 'object' && key.substring(0, 2) !== '__' && !skipFields.find(k => k === key)) {\r\n ret[key] = Utils.cloneDeep(obj[key]);\r\n }\r\n }\r\n return ret;\r\n }\r\n}\r\n\r\n// list of fields we will skip during cloneDeep (nested objects, other internal)\r\nconst skipFields = ['_isNested', 'el', 'grid', 'subGrid', 'engine'];\r\n","/*! jQuery UI - v1.12.1 - 2021-01-24\n* http://jqueryui.com\n* Includes: widget.js, data.js, disable-selection.js, scroll-parent.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/mouse.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.ui = $.ui || {};\n\nvar version = $.ui.version = \"1.12.1\";\n\n\n/*!\n * jQuery UI Widget 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n\n\nvar widgetUuid = 0;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// Http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( $.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"
\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tcurrent = $( $.unique( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._on( options.element, {\n\t\t\t\"remove\": \"_untrackClassesElement\"\n\t\t} );\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName ).off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI :data 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: http://api.jqueryui.com/data-selector/\n\n\nvar data = $.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n\n/*!\n * jQuery UI Disable Selection 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: disableSelection\n//>>group: Core\n//>>description: Disable selection of text content within the set of matched elements.\n//>>docs: http://api.jqueryui.com/disableSelection/\n\n// This file is deprecated\n\n\nvar disableSelection = $.fn.extend( {\n\tdisableSelection: ( function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.on( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tenableSelection: function() {\n\t\treturn this.off( \".ui-disableSelection\" );\n\t}\n} );\n\n\n/*!\n * jQuery UI Scroll Parent 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: http://api.jqueryui.com/scrollParent/\n\n\n\nvar scrollParent = $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n\n\n\n// This file is deprecated\nvar ie = $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n\n/*!\n * jQuery UI Mouse 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: http://api.jqueryui.com/mouse/\n\n\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nvar widgetsMouse = $.widget( \"ui.mouse\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\t( this._mouseStarted && this._mouseUp( event ) );\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\t( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) { return true; }\n} );\n\n\n\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\nvar plugin = $.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||\n\t\t\t\tinstance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nvar safeActiveElement = $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an