{"version":3,"file":"kendo.window.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendowindow","js","this","$","undefined$1","templates","kendo","window","Widget","ui","TabKeyTrap","Popup","Draggable","isPlainObject","activeElement","_activeElement","outerWidth","_outerWidth","outerHeight","_outerHeight","extend","each","template","BODY","NS","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KWINDOWRESIZEHANDLES","KOVERLAY","KWINDOWMINIMIZED","KCONTENTFRAME","LOADINGICONCLASS","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","INLINE_FLEX","VISIBLE","HIDDEN","CURSOR","OPEN","ACTIVATE","DEACTIVATE","CLOSE","REFRESH","RESIZESTART","RESIZEEND","DRAGSTART","DRAGEND","RESTORE","ERROR","OVERFLOW","DATADOCOVERFLOWRULE","ZINDEX","MINIMIZE_MAXIMIZEICONSELECTORS","KPINICONCLASSSELECTOR","KUNPINICONCLASSSELECTOR","PIN_UNPINICONCLASSSELECTOR","TITLEBAR_BUTTONSSELECTOR","REFRESHICONSELECTOR","WINDOWEVENTSHANDLED","zero","isLocalUrl","SIZE","small","medium","large","defined","x","toInt","element","property","parseInt","css","constrain","value","low","high","isNaN","toString","indexOf","Math","max","min","Infinity","executableScript","type","toLowerCase","getPosition","elem","result","top","offsetTop","left","offsetLeft","parent","offsetParent","parentOverflowX","parentOverflowY","scrollTop","scrollLeft","Window","init","options","wrapper","visibility","display","position","content","windowContent","globalWindow","id","that","offset","suppressActions","actions","length","fn","call","appendTo","containment","draggable","first","url","find","filter","remove","is","document","body","contains","visible","closest","themeColor","addClass","getValidCssClass","attr","_createWindow","title","_dimensions","_footerTemplate","append","_footerMessages","minTop","minLeft","maxTop","maxLeft","_position","refresh","toFront","modal","children","_overlay","opacity","on","_buttonEnter","bind","_buttonLeave","_windowActionHandler","_keydown","_focus","_blur","_keydownContent","data","widgetInstance","not","i","_resizable","_draggable","pinned","pin","role","add","support","mousedown","touchScroller","_resizeHandler","_onDocumentResize","_marker","guid","substring","trigger","notify","_tabKeyTrap","trap","shouldTrap","e","currentTarget","removeClass","width","height","maxHeight","sizeClass","size","dimensions","contentBoxSizing","lrBorderWidth","tbBorderWidth","paddingTop","_isPinned","_updateBoundaries","maxWidth","minWidth","minHeight","hide","containmentTop","containmentLeft","parseFloat","Number","replace","innerWidth","innerHeight","clientWidth","scrollbar","clientHeight","_animationOptions","animation","open","effects","close","_resize","resize","resizable","resizing","off","destroy","target","toggleMaximization","split","index","handler","resizeHandle","WindowResizing","dragging","WindowDragging","dragHandle","clickMoveClick","_actions","icon","container","windowSpecificCommands","icons","maximize","custom","map","action","name","html","render","setOptions","doc","cachedOptions","JSON","parse","stringify","_containerScrollTop","_containerScrollLeft","scrollable","restore","_enableDocumentScrolling","events","zoom","direction","fade","duration","properties","scale","autoFocus","isMaximized","isMinimized","_closable","inArray","keys","keyCode","ESC","stopPropagation","_close","handled","newWidth","newHeight","w","h","distance","_closing","altKey","unpin","UP","DOWN","minimize","getOffset","ctrlKey","LEFT","RIGHT","preventDefault","overlay","zIndex","insertBefore","preventScroll","_stopDocumentScrolling","_actionForIcon","exec","className","_modals","windowInstance","windowElements","modals","_object","push","sort","a","b","style","widget","center","newTop","newLeft","documentWindow","_scrollIsAppended","encoded","titleBar","titleElement","arguments","text","htmlEncode","prepend","titlebar","scrollContainer","angular","elements","empty","dataItem","otherModalsVisible","showOptions","contentElement","kendoStop","Fade","overlayFx","fx","fadeIn","endValue","play","show","kendoAnimate","complete","_activate","_removeOverlay","suppressAnimation","hideOverlay","hideOptions","fadeOut","startValue","last","systemTriggered","defaultPrevented","userTriggered","reverse","_deactivate","iframe","lastModal","_actionable","_shouldFocus","active","avoidFocus","currentWindow","containmentContext","openAnimation","originalZIndex","windowObject","zIndexNew","setTimeout","focus","windowTop","restoreOptions","end","removeAttr","_sizingAction","actionId","callback","eq","before","toggle","_storeOverflowRule","$body","$html","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","get","overflow","removeData","win","pinIcon","wnd","zoomLevel","showIframe","initOptions","src","contentFrame","_triggerRefresh","_ajaxRequest","toggleClass","_ajaxComplete","clearTimeout","_loadingIconTimeout","_ajaxError","xhr","status","_ajaxSuccess","contentTemplate","prop","_showLoading","ajax","dataType","cache","error","success","_destroy","unbind","iframeSrcAttributes","contentHtml","isRtl","getAttribute","editor","owner","_preventDragging","group","dragstart","drag","dragend","userEvents","addOverlay","removeOverlay","dragcancel","ref","iconName","renderButton","fillMode","prototype","elementPadding","initialPosition","resizeDirection","initialSize","containerOffset","marginTop","marginLeft","test","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","_relativeElMarginLeft","_relativeElMarginTop","windowBottom","windowRight","rtl","leftRtlOffset","scrollOffset","location","y","newWindowTop","reset","initialWindowPosition","initialPointerPosition","startPosition","client","axis","transforms","_finishDrag","plugin","jQuery"],"sources":["kendo.window.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.draganddrop.js'), require('kendo.popup.js'), require('kendo.icons.js'), require('kendo.html.button.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.draganddrop', 'kendo.popup', 'kendo.icons', 'kendo.html.button'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendowindow = global.kendowindow || {}, global.kendowindow.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"window\",\n name: \"Window\",\n category: \"web\",\n description: \"The Window widget displays content in a modal or non-modal HTML window.\",\n depends: [ \"draganddrop\", \"popup\", \"icons\" ],\n features: [ {\n id: \"window-fx\",\n name: \"Animation\",\n description: \"Support for animation\",\n depends: [ \"fx\" ]\n } ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n TabKeyTrap = kendo.ui.Popup.TabKeyTrap,\n Draggable = kendo.ui.Draggable,\n isPlainObject = $.isPlainObject,\n activeElement = kendo._activeElement,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n extend = $.extend,\n each = $.each,\n template = kendo.template,\n BODY = \"body\",\n templates,\n NS = \".kendoWindow\",\n MODAL_NS = \".kendoWindowModal\",\n // classNames\n KWINDOW = \".k-window\",\n KWINDOWTITLE = \".k-window-title\",\n KWINDOWTITLEBAR = KWINDOWTITLE + \"bar\",\n KWINDOWCONTENT = \".k-window-content\",\n KDIALOGCONTENT = \".k-dialog-content\",\n KWINDOWRESIZEHANDLES = \".k-resize-handle\",\n KOVERLAY = \".k-overlay\",\n KWINDOWMINIMIZED = \"k-window-minimized\",\n KCONTENTFRAME = \"k-content-frame\",\n LOADINGICONCLASS = \"k-i-loading\",\n KHOVERSTATE = \"k-hover\",\n KFOCUSEDSTATE = \"k-focus\",\n MAXIMIZEDSTATE = \"k-window-maximized\",\n INLINE_FLEX = \"k-display-inline-flex\",\n // constants\n VISIBLE = \":visible\",\n HIDDEN = \"hidden\",\n CURSOR = \"cursor\",\n // events\n OPEN = \"open\",\n ACTIVATE = \"activate\",\n DEACTIVATE = \"deactivate\",\n CLOSE = \"close\",\n REFRESH = \"refresh\",\n MINIMIZE = \"minimize\",\n MAXIMIZE = \"maximize\",\n RESIZESTART = \"resizeStart\",\n RESIZE = \"resize\",\n RESIZEEND = \"resizeEnd\",\n DRAGSTART = \"dragstart\",\n DRAGEND = \"dragend\",\n RESTORE = \"restore\",\n KENDOKEYDOWN = \"kendoKeydown\",\n ERROR = \"error\",\n OVERFLOW = \"overflow\",\n DATADOCOVERFLOWRULE = \"original-overflow-rule\",\n ZINDEX = \"zIndex\",\n MINIMIZE_MAXIMIZEICONSELECTORS = \".k-window-titlebar-actions .k-i-window-minimize,.k-window-titlebar-actions .k-i-window,.k-window-titlebar-actions .k-svg-i-window-minimize,.k-window-titlebar-actions .k-svg-i-window\",\n KPINICONCLASSSELECTOR = \".k-i-pin,.k-svg-i-pin\",\n KUNPINICONCLASSSELECTOR = \".k-i-unpin,.k-svg-i-unpin\",\n PIN_UNPINICONCLASSSELECTOR = KPINICONCLASSSELECTOR + \",\" + KUNPINICONCLASSSELECTOR,\n TITLEBAR_BUTTONSSELECTOR = \".k-window-titlebar .k-window-titlebar-action\",\n REFRESHICONSELECTOR = \".k-window-titlebar .k-i-arrow-rotate-cw,.k-window-titlebar .k-svg-i-arrow-rotate-cw\",\n WINDOWEVENTSHANDLED = \"WindowEventsHandled\",\n zero = /^0[a-z]*$/i,\n isLocalUrl = kendo.isLocalUrl,\n SIZE = {\n small: \"k-window-sm\",\n medium: \"k-window-md\",\n large: \"k-window-lg\"\n };\n\n function defined(x) {\n return (typeof x != \"undefined\");\n }\n\n function toInt(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n\n function constrain(value, low, high) {\n var normalizedValue;\n\n if (value && isNaN(value) && value.toString().indexOf(\"px\") < 0) {\n normalizedValue = value;\n } else {\n normalizedValue = Math.max(\n Math.min(parseInt(value, 10), high === Infinity ? high : parseInt(high, 10)),\n low === -Infinity ? low : parseInt(low, 10)\n );\n }\n\n return normalizedValue;\n }\n\n function executableScript() {\n return !this.type || this.type.toLowerCase().indexOf(\"script\") >= 0;\n }\n\n\n function getPosition(elem) {\n var result = { top: elem.offsetTop, left: elem.offsetLeft },\n parent = elem.offsetParent;\n\n while (parent) {\n result.top += parent.offsetTop;\n result.left += parent.offsetLeft;\n\n var parentOverflowX = $(parent).css(\"overflowX\");\n var parentOverflowY = $(parent).css(\"overflowY\");\n\n if (parentOverflowY === \"auto\" || parentOverflowY === \"scroll\") {\n result.top -= parent.scrollTop;\n }\n\n if (parentOverflowX === \"auto\" || parentOverflowX === \"scroll\") {\n result.left -= parent.scrollLeft;\n }\n\n parent = parent.offsetParent;\n }\n\n return result;\n }\n\n var Window = Widget.extend({\n init: function(element, options) {\n var that = this,\n wrapper,\n offset = {},\n visibility, display, position,\n isVisible = false,\n content,\n windowContent,\n windowFrame,\n globalWindow,\n suppressActions = options && options.actions && !options.actions.length,\n id;\n\n Widget.fn.init.call(that, element, options);\n options = that.options;\n position = options.position;\n element = that.element;\n content = options.content;\n globalWindow = $(window);\n\n if (suppressActions) {\n options.actions = [];\n }\n\n that.appendTo = $(options.appendTo);\n\n that.containment = options.draggable.containment ? $(options.draggable.containment).first() : null;\n\n if (content && !isPlainObject(content)) {\n content = options.content = { url: content };\n }\n\n // remove script blocks to prevent double-execution\n element.find(\"script\").filter(executableScript).remove();\n\n if (!element.parent().is(that.appendTo) && !that.containment && (position.top === undefined$1 || position.left === undefined$1)) {\n if (element.is(VISIBLE)) {\n offset = element.offset();\n isVisible = true;\n } else {\n visibility = element.css(\"visibility\");\n display = element.css(\"display\");\n\n element.css({ visibility: HIDDEN, display: \"\" });\n\n if (document.body.contains(element[0])) {\n offset = element.offset();\n } else {\n offset = { top: 0, left: 0 };\n }\n\n element.css({ visibility: visibility, display: display });\n }\n\n if (position.top === undefined$1) {\n position.top = offset.top;\n }\n if (position.left === undefined$1) {\n position.left = offset.left;\n }\n }\n\n if (!defined(options.visible) || options.visible === null) {\n options.visible = element.is(VISIBLE);\n }\n\n wrapper = that.wrapper = element.closest(KWINDOW);\n\n if (options.themeColor && options.themeColor !== \"none\") {\n wrapper.addClass(kendo.getValidCssClass(\"k-window-\", \"themeColor\", options.themeColor));\n }\n\n if (!element.is(\".k-window-content\") || !wrapper[0]) {\n element.addClass(\"k-window-content\");\n element.attr(\"tabindex\", 0);\n that._createWindow(element, options);\n wrapper = that.wrapper = element.closest(KWINDOW);\n\n that.title(that.options.title);\n that._dimensions();\n\n if (options._footerTemplate) {\n that.wrapper.append(kendo.template(options._footerTemplate)(options._footerMessages));\n }\n }\n\n that.minTop = that.minLeft = -Infinity;\n that.maxTop = that.maxLeft = Infinity;\n that._position();\n\n if (content) {\n that.refresh(content);\n }\n\n if (options.visible) {\n that.toFront(null, !options.modal);\n }\n\n windowContent = wrapper.children(KWINDOWCONTENT);\n\n if (options.visible && options.modal) {\n that._overlay(wrapper.is(VISIBLE)).css({ opacity: 0.5 });\n }\n\n wrapper\n .on(\"mouseenter\" + NS, TITLEBAR_BUTTONSSELECTOR, that._buttonEnter.bind(that))\n .on(\"mouseleave\" + NS, TITLEBAR_BUTTONSSELECTOR, that._buttonLeave.bind(that))\n .on(\"click\" + NS, \"> \" + TITLEBAR_BUTTONSSELECTOR, that._windowActionHandler.bind(that))\n .on(\"keydown\" + NS, that, that._keydown.bind(that))\n .on(\"focus\" + NS, that._focus.bind(that))\n .on(\"blur\" + NS, that._blur.bind(that));\n\n windowContent\n .on(\"keydown\" + NS, that, that._keydownContent.bind(that));\n\n windowFrame = windowContent.find(\".\" + KCONTENTFRAME)[0];\n\n if (windowFrame && !globalWindow.data(WINDOWEVENTSHANDLED)) {\n\n globalWindow.on(\"blur\" + NS, function() {\n var element = $(document.activeElement).parent(KWINDOWCONTENT);\n if (element.length) {\n var windowInstance = kendo.widgetInstance(element);\n windowInstance._focus();\n }\n });\n\n globalWindow.on(\"focus\" + NS, function() {\n $(KWINDOWCONTENT).not(KDIALOGCONTENT).each(function(i, element) {\n kendo.widgetInstance($(element))._blur();\n });\n });\n\n globalWindow.data(WINDOWEVENTSHANDLED, true);\n }\n\n this._resizable();\n\n this._draggable();\n\n if (options.pinned && this.wrapper.is(\":visible\")) {\n that.pin();\n }\n\n id = element.attr(\"id\");\n if (id) {\n id = id + \"_wnd_title\";\n wrapper.attr({\n \"role\": \"dialog\",\n \"aria-labelledby\": id\n }).children(KWINDOWTITLEBAR)\n .children(KWINDOWTITLE)\n .attr(\"id\", id);\n }\n\n wrapper.add(wrapper.children(\".k-resize-handle,\" + KWINDOWTITLEBAR))\n .on(kendo.support.mousedown + NS, that.toFront.bind(that));\n\n that.touchScroller = kendo.touchScroller(element);\n\n that._resizeHandler = that._onDocumentResize.bind(that);\n\n that._marker = kendo.guid().substring(0, 8);\n\n $(window).on(\"resize\" + NS + that._marker, that._resizeHandler);\n\n if (options.visible) {\n that.trigger(OPEN);\n that.trigger(ACTIVATE);\n }\n\n kendo.notify(that);\n\n if (this.options.modal) {\n this._tabKeyTrap = new TabKeyTrap(wrapper);\n this._tabKeyTrap.trap();\n this._tabKeyTrap.shouldTrap = function() {\n return wrapper.data(\"isFront\");\n };\n }\n },\n\n _buttonEnter: function(e) {\n $(e.currentTarget).addClass(KHOVERSTATE);\n },\n\n _buttonLeave: function(e) {\n $(e.currentTarget).removeClass(KHOVERSTATE);\n },\n\n _focus: function() {\n this.wrapper.addClass(KFOCUSEDSTATE);\n },\n\n _blur: function() {\n this.wrapper.removeClass(KFOCUSEDSTATE);\n },\n\n _dimensions: function() {\n var wrapper = this.wrapper;\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var maxHeight = options.maxHeight;\n var sizeClass = options.size;\n var dimensions = [\"minWidth\",\"minHeight\",\"maxWidth\",\"maxHeight\"];\n var contentBoxSizing = wrapper.css(\"box-sizing\") == \"content-box\";\n\n var lrBorderWidth = contentBoxSizing ? toInt(wrapper, \"border-left-width\") + toInt(wrapper, \"border-right-width\") : 0;\n var tbBorderWidth = contentBoxSizing ? toInt(wrapper, \"border-top-width\") + toInt(wrapper, \"border-bottom-width\") : 0;\n var paddingTop = contentBoxSizing ? toInt(wrapper, \"padding-top\") : 0;\n\n if (this.containment && !this._isPinned) {\n this._updateBoundaries();\n options.maxHeight = Math.min(this.containment.height - (tbBorderWidth + paddingTop), maxHeight);\n options.maxWidth = Math.min(this.containment.width - lrBorderWidth, options.maxWidth);\n }\n\n for (var i = 0; i < dimensions.length; i++) {\n var value = options[dimensions[i]] || \"\";\n if (value != Infinity) {\n wrapper.css(dimensions[i], value);\n }\n }\n\n if (maxHeight != Infinity) {\n this.element.css(\"maxHeight\", maxHeight);\n }\n\n if (width) {\n wrapper.outerWidth(constrain(width, options.minWidth, options.maxWidth));\n }\n else {\n wrapper.outerWidth(\"\");\n }\n\n if (height) {\n wrapper.outerHeight(constrain(height, options.minHeight, options.maxHeight));\n }\n else {\n wrapper.outerHeight(\"\");\n }\n\n if (!options.visible) {\n wrapper.removeClass(INLINE_FLEX).hide();\n }\n\n if (sizeClass && SIZE[sizeClass]) {\n wrapper.addClass(SIZE[sizeClass]);\n }\n },\n\n _position: function() {\n var wrapper = this.wrapper,\n position = this.options.position,\n containmentTop, containmentLeft;\n\n this._updateBoundaries();\n\n if (this.containment) {\n position.top = position.top || 0;\n position.left = position.left || 0;\n\n containmentTop = position.top.toString().indexOf(\"%\") > 0 ?\n parseInt(this.containment.height * (parseFloat(position.top) / 100), 10) :\n position.top;\n\n containmentLeft = position.left.toString().indexOf(\"%\") > 0 ?\n parseInt(this.containment.width * (parseFloat(position.left) / 100), 10) :\n position.left;\n\n position.top = constrain(containmentTop, this.minTop, this.maxTop);\n position.left = constrain(containmentLeft, this.minLeft, this.maxLeft);\n }\n\n if (position.top && position.top.toString().indexOf(\"px\") > 0) {\n position.top = Number(position.top.replace(\"px\", \"\"));\n }\n\n if (position.left && position.left.toString().indexOf(\"px\") > 0) {\n position.left = Number(position.left.replace(\"px\", \"\"));\n }\n\n if (position.top === 0) {\n position.top = position.top.toString();\n }\n\n if (position.left === 0) {\n position.left = position.left.toString();\n }\n\n wrapper.css({\n top: position.top || \"\",\n left: position.left || \"\"\n });\n },\n\n _updateBoundaries: function() {\n var containment = this.containment;\n\n if (!containment) {\n return null;\n }\n\n containment.width = containment.innerWidth();\n containment.height = containment.innerHeight();\n\n if (parseInt(containment.width, 10) > containment[0].clientWidth) {\n containment.width -= kendo.support.scrollbar();\n }\n\n if (parseInt(containment.height, 10) > containment[0].clientHeight) {\n containment.height -= kendo.support.scrollbar();\n }\n\n containment.position = getPosition(containment[0]);\n\n if (this._isPinned) {\n this.minTop = this.minLeft = -Infinity;\n this.maxTop = this.maxLeft = Infinity;\n } else {\n this.minTop = containment.scrollTop();\n this.minLeft = containment.scrollLeft();\n this.maxLeft = this.minLeft + containment.width - outerWidth(this.wrapper, true);\n this.maxTop = this.minTop + containment.height - outerHeight(this.wrapper, true);\n }\n },\n\n _animationOptions: function(id) {\n var animation = this.options.animation;\n var basicAnimation = {\n open: { effects: {} },\n close: { hide: true, effects: {} }\n };\n\n return animation && animation[id] || basicAnimation[id];\n },\n\n _resize: function() {\n kendo.resize(this.element.children());\n },\n\n _resizable: function() {\n var resizable = this.options.resizable;\n var wrapper = this.wrapper;\n\n if (this.resizing) {\n wrapper\n .off(\"dblclick\" + NS)\n .children(KWINDOWRESIZEHANDLES).remove();\n\n this.resizing.destroy();\n this.resizing = null;\n }\n\n if (resizable) {\n wrapper.on(\"dblclick\" + NS, KWINDOWTITLEBAR, (function(e) {\n if (!$(e.target).closest(\".k-window-titlebar-action\").length) {\n this.toggleMaximization();\n }\n }).bind(this));\n\n each(\"n e s w se sw ne nw\".split(\" \"), function(index, handler) {\n wrapper.append(templates.resizeHandle(handler));\n });\n\n this.resizing = new WindowResizing(this);\n }\n\n wrapper = null;\n },\n\n _draggable: function() {\n var draggable = this.options.draggable;\n\n if (this.dragging) {\n this.dragging.destroy();\n this.dragging = null;\n }\n if (draggable) {\n this.dragging = new WindowDragging(this, draggable.dragHandle || KWINDOWTITLEBAR, draggable.clickMoveClick);\n }\n },\n\n _actions: function() {\n var options = this.options;\n var actions = options.actions;\n var pinned = options.pinned;\n var titlebar = this.wrapper.children(KWINDOWTITLEBAR);\n var container = titlebar.find(\".k-window-titlebar-actions\");\n var windowSpecificCommands = [ \"minimize\", \"maximize\" ];\n var icons = {\n \"maximize\": \"window\",\n \"refresh\": \"arrow-rotate-cw\",\n \"custom\": \"gear\"\n };\n var icon;\n\n actions = $.map(actions, function(action) {\n action = pinned && action.toLowerCase() === \"pin\" ? \"unpin\" : action;\n icon = icons[action.toLowerCase()] || \"\";\n return { name: (windowSpecificCommands.indexOf(action.toLowerCase()) > - 1) ? \"window-\" + action : action, icon: action.toLowerCase() == \"close\" ? \"x\" : icon };\n });\n\n container.html(kendo.render(templates.action, actions));\n },\n\n setOptions: function(options) {\n var that = this;\n var sizeClass = that.options.size;\n var doc = this.containment && !that._isPinned ? this.containment : $(document);\n // make a deep extend over options.position telerik/kendo-ui-core#844\n var cachedOptions = JSON.parse(JSON.stringify(options));\n\n that.wrapper.removeClass(kendo.getValidCssClass(\"k-window-\", \"themeColor\", that.options.themeColor));\n\n extend(options.position, that.options.position);\n extend(options.position, cachedOptions.position);\n\n that._containerScrollTop = doc.scrollTop();\n that._containerScrollLeft = doc.scrollLeft();\n\n Widget.fn.setOptions.call(that, options);\n var scrollable = that.options.scrollable !== false;\n\n that.restore();\n\n if (typeof options.title !== \"undefined\") {\n that.title(options.title);\n }\n\n that.wrapper.removeClass(SIZE[sizeClass]);\n that._dimensions();\n\n that._position();\n that._resizable();\n that._draggable();\n that._actions();\n\n if (that.options.themeColor && that.options.themeColor !== \"none\") {\n that.wrapper.addClass(kendo.getValidCssClass(\"k-window-\", \"themeColor\", that.options.themeColor));\n }\n\n if (typeof options.modal !== \"undefined\") {\n var visible = that.options.visible !== false;\n that._enableDocumentScrolling();\n that._overlay(options.modal && visible);\n }\n\n that.element.css(OVERFLOW, scrollable ? \"\" : \"hidden\");\n },\n\n events: [\n OPEN,\n ACTIVATE,\n DEACTIVATE,\n CLOSE,\n MINIMIZE,\n MAXIMIZE,\n REFRESH,\n RESTORE,\n RESIZESTART,\n RESIZE,\n RESIZEEND,\n DRAGSTART,\n DRAGEND,\n KENDOKEYDOWN,\n ERROR\n ],\n\n options: {\n name: \"Window\",\n animation: {\n open: {\n effects: { zoom: { direction: \"in\" }, fade: { direction: \"in\" } },\n duration: 350\n },\n close: {\n effects: { zoom: { direction: \"out\", properties: { scale: 0.7 } }, fade: { direction: \"out\" } },\n duration: 350,\n hide: true\n }\n },\n title: \"\",\n themeColor: \"\",\n actions: [\"Close\"],\n autoFocus: true,\n modal: false,\n size: \"auto\",\n resizable: true,\n draggable: true,\n minWidth: 90,\n minHeight: 50,\n maxWidth: Infinity,\n maxHeight: Infinity,\n pinned: false,\n scrollable: true,\n position: {},\n content: null,\n visible: null,\n height: null,\n width: null,\n appendTo: \"body\",\n isMaximized: false,\n isMinimized: false\n },\n\n _closable: function() {\n return $.inArray(\"close\", $.map(this.options.actions, function(x) { return x.toLowerCase(); })) > -1;\n },\n\n _keydownContent: function(e) {\n var that = this,\n keys = kendo.keys,\n keyCode = e.keyCode;\n\n if (keyCode == keys.ESC && that._closable()) {\n e.stopPropagation();\n that._close(false);\n }\n },\n\n _keydown: function(e) {\n var that = this,\n options = that.options,\n keys = kendo.keys,\n keyCode = e.keyCode,\n wrapper = that.wrapper,\n offset, handled,\n distance = 10,\n isMaximized = options.isMaximized,\n isMinimized = options.isMinimized,\n newWidth, newHeight, w, h;\n\n if (keyCode == keys.ESC && that._closable()) {\n e.stopPropagation();\n that._close(false);\n }\n\n if (e.target != e.currentTarget || that._closing) {\n return;\n }\n\n // Refresh\n if (e.altKey && keyCode == 82) {// Alt + R\n that.refresh();\n }\n\n // Pin/Unpin\n if (e.altKey && keyCode == 80) {// Alt + P\n if (that.options.pinned) {\n that.unpin();\n } else {\n that.pin();\n }\n }\n\n // Maximize/Restore/Miminimize\n if (e.altKey && keyCode == keys.UP) {\n if (isMinimized) {\n that.restore();\n that.wrapper.trigger(\"focus\");\n } else if (!isMaximized) {\n that.maximize();\n that.wrapper.trigger(\"focus\");\n }\n } else if (e.altKey && keyCode == keys.DOWN) {\n if (!isMinimized && !isMaximized) {\n that.minimize();\n that.wrapper.trigger(\"focus\");\n } else if (isMaximized) {\n that.restore();\n that.wrapper.trigger(\"focus\");\n }\n }\n\n offset = kendo.getOffset(wrapper);\n\n if (that.containment && !that._isPinned) {\n offset = that.options.position;\n }\n\n if (options.draggable && !e.ctrlKey && !e.altKey && !isMaximized) {\n that._updateBoundaries();\n if (keyCode == keys.UP) {\n offset.top = constrain(offset.top - distance, that.minTop, that.maxTop);\n handled = wrapper.css(\"top\", offset.top);\n } else if (keyCode == keys.DOWN) {\n offset.top = constrain(offset.top + distance, that.minTop, that.maxTop);\n handled = wrapper.css(\"top\", offset.top);\n } else if (keyCode == keys.LEFT) {\n offset.left = constrain(offset.left - distance, that.minLeft, that.maxLeft);\n handled = wrapper.css(\"left\", offset.left);\n } else if (keyCode == keys.RIGHT) {\n offset.left = constrain(offset.left + distance, that.minLeft, that.maxLeft);\n handled = wrapper.css(\"left\", offset.left);\n }\n }\n\n if (options.resizable && e.ctrlKey && !isMaximized && !isMinimized) {\n if (keyCode == keys.UP) {\n handled = true;\n newHeight = wrapper.outerHeight() - distance;\n } else if (keyCode == keys.DOWN) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newHeight = Math.min(wrapper.outerHeight() + distance,\n that.containment.height - offset.top - toInt(wrapper, \"padding-top\") -\n toInt(wrapper, \"borderBottomWidth\") - toInt(wrapper, \"borderTopWidth\"));\n } else {\n newHeight = wrapper.outerHeight() + distance;\n }\n } if (keyCode == keys.LEFT) {\n handled = true;\n newWidth = wrapper.outerWidth() - distance;\n } else if (keyCode == keys.RIGHT) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newWidth = Math.min(wrapper.outerWidth() + distance,\n that.containment.width - offset.left -\n toInt(wrapper, \"borderLeftWidth\") - toInt(wrapper, \"borderRightWidth\"));\n } else {\n newWidth = wrapper.outerWidth() + distance;\n }\n }\n\n if (handled) {\n w = constrain(newWidth, options.minWidth, options.maxWidth);\n h = constrain(newHeight, options.minHeight, options.maxHeight);\n\n if (!isNaN(w)) {\n wrapper.outerWidth(w);\n that.options.width = w + \"px\";\n }\n if (!isNaN(h)) {\n wrapper.outerHeight(h);\n that.options.height = h + \"px\";\n }\n\n that.resize();\n }\n }\n\n if (handled) {\n e.preventDefault();\n }\n },\n\n _overlay: function(visible) {\n var overlay = this.containment ? this.containment.children(KOVERLAY) : this.appendTo.children(KOVERLAY),\n wrapper = this.wrapper,\n display = visible ? \"inline-flex\" : \"none\",\n zIndex = parseInt(wrapper.css(ZINDEX), 10) - 1;\n\n if (!overlay.length) {\n overlay = $(\"
\");\n }\n\n overlay\n .insertBefore(wrapper[0])\n .css({\n zIndex: zIndex,\n display: display\n });\n\n if (this.options.modal.preventScroll && !this.containment) {\n this._stopDocumentScrolling();\n }\n\n return overlay;\n },\n\n _actionForIcon: function(icon) {\n var iconClass = /\\bk(-svg)?-i(-\\w+)+\\b/.exec(icon[0].className)[0];\n return {\n \"x\": \"_close\",\n \"window\": \"maximize\",\n \"window-minimize\": \"minimize\",\n \"window-restore\": \"restore\",\n \"arrow-rotate-cw\": \"refresh\",\n \"pin\": \"pin\",\n \"unpin\": \"unpin\"\n }[iconClass.replace(/(k-i-|k-svg-i-)/, \"\")];\n },\n\n _windowActionHandler: function(e) {\n if (this._closing) {\n return;\n }\n var icon = $(e.target).closest(\".k-window-titlebar-action\").find(\".k-icon,.k-svg-icon\");\n var action = this._actionForIcon(icon);\n\n if (action) {\n e.preventDefault();\n this[action]();\n return false;\n }\n },\n\n _modals: function() {\n var that = this,\n windowElements = $(KWINDOW + VISIBLE),\n windowInstance,\n modals = [];\n\n for (var i = 0; i < windowElements.length; i += 1) {\n windowInstance = that._object($(windowElements[i]));\n\n if (windowInstance &&\n windowInstance.options &&\n windowInstance.options.modal &&\n windowInstance.options.visible &&\n windowInstance.options.appendTo === that.options.appendTo &&\n (!windowInstance.containment || (that.containment && windowInstance.containment[0] === that.containment[0]))) {\n modals.push(windowInstance.wrapper[0]);\n }\n }\n\n modals.sort(function(a, b) {\n return a.style.zIndex - b.style.zIndex;\n });\n\n that = null;\n\n return $(modals);\n },\n\n _object: function(element) {\n var content = element.children(KWINDOWCONTENT);\n var widget = kendo.widgetInstance(content);\n\n if (widget) {\n return widget;\n }\n\n return undefined$1;\n },\n\n center: function() {\n var that = this,\n position = that.options.position,\n wrapper = that.wrapper,\n documentWindow = $(window),\n scrollTop = 0,\n scrollLeft = 0,\n newTop, newLeft;\n\n if (that.options.isMaximized) {\n return that;\n }\n\n if (that.options.pinned && !that._isPinned) {\n that.pin();\n }\n\n if (!that.options.pinned) {\n scrollTop = documentWindow.scrollTop();\n scrollLeft = documentWindow.scrollLeft();\n }\n\n if (this.containment && !that.options.pinned) {\n newTop = this.minTop + (this.maxTop - this.minTop) / 2;\n newLeft = this.minLeft + (this.maxLeft - this.minLeft) / 2;\n } else {\n that._scrollIsAppended = true;\n newLeft = scrollLeft + Math.max(0, (documentWindow.width() - wrapper.outerWidth()) / 2);\n newTop = scrollTop + Math.max(0, (documentWindow.height() - wrapper.outerHeight() - toInt(wrapper, \"paddingTop\")) / 2);\n }\n\n wrapper.css({\n left: newLeft,\n top: newTop\n });\n\n position.top = newTop;\n position.left = newLeft;\n\n return that;\n },\n\n title: function(title) {\n var that = this,\n value,\n encoded = true,\n wrapper = that.wrapper,\n titleBar = wrapper.children(KWINDOWTITLEBAR),\n titleElement = titleBar.children(KWINDOWTITLE);\n\n if (!arguments.length) {\n return titleElement.html();\n }\n\n if ($.isPlainObject(title)) {\n value = typeof title.text !== \"undefined\" ? title.text : \"\";\n encoded = title.encoded !== false;\n } else {\n value = title;\n }\n\n if (value === false) {\n wrapper.addClass(\"k-window-titleless\");\n wrapper.css(\"padding-top\", 0);\n titleBar.remove();\n } else {\n if (!titleBar.length) {\n wrapper.prepend(templates.titlebar({\n title: encoded ? kendo.htmlEncode(value) : value\n }));\n that._actions();\n titleBar = wrapper.children(KWINDOWTITLEBAR);\n } else {\n titleElement.html(encoded ? kendo.htmlEncode(value) : value);\n }\n }\n\n that.options.title = value;\n\n return that;\n },\n\n content: function(html, data) {\n var content = this.wrapper.children(KWINDOWCONTENT),\n scrollContainer = content.children(\".km-scroll-container\");\n\n content = scrollContainer[0] ? scrollContainer : content;\n\n if (!defined(html)) {\n return content.html();\n }\n\n this.angular(\"cleanup\", function() {\n return { elements: content.children() };\n });\n\n kendo.destroy(this.element.children());\n\n content.empty().html(html);\n\n this.angular(\"compile\", function() {\n var a = [];\n for (var i = content.length; --i >= 0;) {\n a.push({ dataItem: data });\n }\n return {\n elements: content.children(),\n data: a\n };\n });\n\n return this;\n },\n\n open: function() {\n var that = this,\n wrapper = that.wrapper,\n options = that.options,\n showOptions = this._animationOptions(\"open\"),\n contentElement = wrapper.children(KWINDOWCONTENT),\n overlay, otherModalsVisible,\n containmentContext = this.containment && !that._isPinned,\n doc = containmentContext ? this.containment : $(document);\n\n if (!that.trigger(OPEN)) {\n if (that._closing) {\n wrapper.kendoStop(true, true);\n }\n\n that._closing = false;\n\n that.toFront();\n\n if (options.autoFocus) {\n that.wrapper.trigger(\"focus\");\n }\n\n options.visible = true;\n\n if (options.modal) {\n otherModalsVisible = !!that._modals().length;\n overlay = that._overlay(otherModalsVisible);\n\n overlay.kendoStop(true, true);\n\n if (showOptions.duration && kendo.effects.Fade && !otherModalsVisible) {\n var overlayFx = kendo.fx(overlay).fadeIn();\n overlayFx.duration(showOptions.duration || 0);\n overlayFx.endValue(0.5);\n overlayFx.play();\n } else {\n overlay.css(\"opacity\", 0.5);\n }\n\n overlay.show();\n\n $(window).on(\"focus\" + MODAL_NS, function() {\n if (wrapper.data(\"isFront\") && !$(document.activeElement).closest(wrapper).length) {\n that.wrapper.trigger(\"focus\");\n }\n });\n }\n\n if (!wrapper.is(VISIBLE)) {\n contentElement.css(OVERFLOW, HIDDEN);\n\n that.wrapper.find(TITLEBAR_BUTTONSSELECTOR).addClass(\"k-button-flat\");\n\n wrapper.css({ display: \"inline-flex\" });\n wrapper.kendoStop().kendoAnimate({\n effects: showOptions.effects,\n duration: showOptions.duration,\n complete: this._activate.bind(this)\n });\n }\n }\n\n if (options.isMaximized) {\n that._containerScrollTop = doc.scrollTop();\n that._containerScrollLeft = doc.scrollLeft();\n that._stopDocumentScrolling();\n }\n\n if (this.options.pinned && !this._isPinned) {\n this.pin();\n }\n\n return that;\n },\n\n _activate: function() {\n var scrollable = this.options.scrollable !== false;\n\n if (this.options.autoFocus) {\n this.wrapper.trigger(\"focus\");\n }\n\n this.element.css(OVERFLOW, scrollable ? \"\" : \"hidden\");\n kendo.resize(this.element.children());\n\n this.trigger(ACTIVATE);\n },\n\n _removeOverlay: function(suppressAnimation) {\n var modals = this._modals();\n var options = this.options;\n var hideOverlay = options.modal && !modals.length;\n var hideOptions = this._animationOptions(\"close\");\n\n if (hideOverlay) {\n if (!suppressAnimation && hideOptions.duration && kendo.effects.Fade) {\n var overlayFx = kendo.fx(options.modal ? this._overlay(true) : $(undefined$1)).fadeOut();\n overlayFx.duration(hideOptions.duration || 0);\n overlayFx.startValue(0.5);\n overlayFx.play();\n } else {\n this._overlay(false).remove();\n }\n if (options.modal.preventScroll) {\n this._enableDocumentScrolling();\n }\n } else if (modals.length) {\n this._object(modals.last())._overlay(true);\n\n if (options.modal.preventScroll) {\n this._stopDocumentScrolling();\n }\n }\n },\n\n _close: function(systemTriggered) {\n var that = this,\n wrapper = that.wrapper,\n options = that.options,\n showOptions = this._animationOptions(\"open\"),\n hideOptions = this._animationOptions(\"close\"),\n containmentContext = this.containment && !that._isPinned,\n doc = containmentContext ? this.containment : $(document),\n defaultPrevented;\n\n if (that._closing) {\n return;\n }\n\n defaultPrevented = that.trigger(CLOSE, { userTriggered: !systemTriggered });\n that._closing = !defaultPrevented;\n\n if (wrapper.is(VISIBLE) && !defaultPrevented) {\n options.visible = false;\n\n $(KWINDOW).each(function(i, element) {\n var contentElement = $(element).children(KWINDOWCONTENT);\n\n // Remove overlay set by toFront\n if (element != wrapper && contentElement.find(\"> .\" + KCONTENTFRAME).length > 0) {\n contentElement.children(KOVERLAY).remove();\n }\n });\n\n this._removeOverlay();\n\n // Prevent close animation from stopping\n that.wrapper.find(TITLEBAR_BUTTONSSELECTOR).removeClass(\"k-button-flat\");\n\n wrapper.kendoStop().kendoAnimate({\n effects: hideOptions.effects || showOptions.effects,\n reverse: hideOptions.reverse === true,\n duration: hideOptions.duration,\n complete: this._deactivate.bind(this)\n });\n $(window).off(MODAL_NS);\n }\n\n if (that.options.isMaximized) {\n that._enableDocumentScrolling();\n if (that._containerScrollTop && that._containerScrollTop > 0) {\n doc.scrollTop(that._containerScrollTop);\n }\n if (that._containerScrollLeft && that._containerScrollLeft > 0) {\n doc.scrollLeft(that._containerScrollLeft);\n }\n }\n\n if (that.options.iframe) {\n that.wrapper.trigger(\"blur\");\n }\n },\n\n _deactivate: function() {\n var that = this;\n\n that.wrapper\n .removeClass(INLINE_FLEX)\n .hide()\n .css(\"opacity\", \"\");\n\n that.trigger(DEACTIVATE);\n\n if (that.options.modal) {\n var lastModal = that._object(that._modals().last());\n if (lastModal) {\n lastModal.toFront();\n }\n }\n },\n\n close: function() {\n this._close(true);\n return this;\n },\n\n _actionable: function(element) {\n return $(element).is((TITLEBAR_BUTTONSSELECTOR + \", :input, a, .k-input, .k-icon, .k-svg-icon, [role='gridcell'], .k-input-value-text\"));\n },\n\n _shouldFocus: function(target) {\n var active = activeElement(),\n element = this.wrapper;\n\n return this.options.autoFocus &&\n !$(active).is(element) &&\n !this._actionable(target) &&\n (!element.find(active).length || !element.find(target).length);\n },\n\n toFront: function(e, avoidFocus) {\n var that = this,\n wrapper = that.wrapper,\n currentWindow = wrapper[0],\n containmentContext = that.containment && !that._isPinned,\n openAnimation = this._animationOptions(\"open\"),\n zIndex = +wrapper.css(ZINDEX),\n originalZIndex = zIndex,\n target = (e && e.target) || null;\n\n $(KWINDOW).each(function(i, element) {\n var windowObject = $(element),\n zIndexNew = windowObject.css(ZINDEX),\n contentElement = windowObject.children(KWINDOWCONTENT);\n\n if (!isNaN(zIndexNew)) {\n zIndex = Math.max(+zIndexNew, zIndex);\n }\n\n wrapper.data(\"isFront\", element == currentWindow);\n // Add overlay to windows with iframes and lower z-index to prevent\n // trapping of events when resizing / dragging\n\n if (element != currentWindow &&\n contentElement.find(\".\" + KCONTENTFRAME).length &&\n !contentElement.find(KOVERLAY).length) {\n contentElement.append(templates.overlay);\n }\n });\n\n if (!wrapper[0].style.zIndex || originalZIndex < zIndex) {\n wrapper.css(ZINDEX, zIndex + 2);\n }\n that.element.find(\"> .k-overlay\").remove();\n\n if (that._shouldFocus(target)) {\n if (!avoidFocus) {\n setTimeout(function() {\n that.wrapper.focus();\n }, openAnimation ? openAnimation.duration : 0);\n }\n\n var scrollTop = containmentContext ? that.containment.scrollTop() : $(window).scrollTop(),\n windowTop = parseInt(wrapper.position().top, 10);\n\n if (!that.options.pinned && windowTop > 0 && windowTop < scrollTop) {\n if (scrollTop > 0) {\n $(window).scrollTop(windowTop);\n } else {\n wrapper.css(\"top\", scrollTop);\n }\n }\n }\n\n wrapper = null;\n\n return that;\n },\n\n toggleMaximization: function() {\n if (this._closing) {\n return this;\n }\n\n return this[this.options.isMaximized ? \"restore\" : \"maximize\"]();\n },\n\n restore: function() {\n var that = this;\n var options = that.options;\n var minHeight = options.minHeight;\n var restoreOptions = that.restoreOptions;\n var shouldRestrictTop;\n var container = that.containment && !that._isPinned ? that.containment : $(document);\n\n if (!options.isMaximized && !options.isMinimized) {\n return that;\n }\n\n if (minHeight && minHeight != Infinity) {\n that.wrapper.css(\"min-height\", minHeight);\n }\n\n if (restoreOptions && !options.isMaximized) {\n restoreOptions.height = constrain(restoreOptions.height, that.options.minHeight, that.options.maxHeight);\n\n shouldRestrictTop = options.position.top + parseInt(restoreOptions.height, 10) > that.maxTop;\n\n if (shouldRestrictTop) {\n options.position.top = constrain(options.position.top, that.minTop, that.maxTop - parseInt(restoreOptions.height, 10));\n\n extend(restoreOptions, {\n left: options.position.left,\n top: options.position.top\n });\n }\n }\n\n that.wrapper\n .css({\n position: options.pinned ? \"fixed\" : \"absolute\",\n left: restoreOptions.left,\n top: restoreOptions.top,\n width: restoreOptions.width,\n height: restoreOptions.height\n })\n .removeClass(MAXIMIZEDSTATE)\n .removeClass(KWINDOWMINIMIZED)\n .find(\".k-window-content,.k-resize-handle\").show().end()\n .find(\".k-window-titlebar .k-i-window-restore,.k-window-titlebar .k-svg-i-window-restore\").parent().remove().end().end()\n .find(MINIMIZE_MAXIMIZEICONSELECTORS).parent().show().end().end()\n .find(PIN_UNPINICONCLASSSELECTOR).parent().show();\n\n if (options.isMaximized) {\n that.wrapper.find(\".k-i-window,.k-svg-i-window\").parent().trigger(\"focus\");\n } else if (options.isMinimized) {\n that.wrapper.find(\".k-i-window-minimize,.k-svg-i-window-minimize\").parent().trigger(\"focus\");\n }\n\n that.options.width = restoreOptions.width;\n that.options.height = restoreOptions.height;\n\n if (!that.options.modal.preventScroll) {\n that._enableDocumentScrolling();\n }\n\n if (that._containerScrollTop && that._containerScrollTop > 0) {\n container.scrollTop(that._containerScrollTop);\n }\n if (that._containerScrollLeft && that._containerScrollLeft > 0) {\n container.scrollLeft(that._containerScrollLeft);\n }\n\n options.isMaximized = options.isMinimized = false;\n\n that.wrapper.removeAttr(\"aria-labelled-by\");\n\n that.resize();\n\n that.trigger(RESTORE);\n\n return that;\n },\n\n _sizingAction: function(actionId, callback) {\n var that = this,\n wrapper = that.wrapper,\n style = wrapper[0].style,\n options = that.options;\n\n if (options.isMaximized || options.isMinimized) {\n return that;\n }\n\n that.restoreOptions = {\n width: style.width,\n height: style.height\n };\n\n wrapper\n .children(KWINDOWRESIZEHANDLES).hide().end()\n .children(KWINDOWTITLEBAR).find(MINIMIZE_MAXIMIZEICONSELECTORS).parent().hide()\n .eq(0).before(templates.action({ name: \"window-restore\" }));\n\n callback.call(that);\n\n that.wrapper.children(KWINDOWTITLEBAR).find(PIN_UNPINICONCLASSSELECTOR).parent().toggle(actionId !== \"maximize\");\n\n that.trigger(actionId);\n\n wrapper.find(\".k-i-window-restore,.k-svg-i-window-restore\").parent().trigger(\"focus\");\n\n return that;\n },\n\n maximize: function() {\n this._sizingAction(\"maximize\", function() {\n var that = this,\n wrapper = that.wrapper,\n containmentContext = this.containment && !that._isPinned,\n position = wrapper.position(),\n doc = $(document);\n\n extend(that.restoreOptions, {\n left: position.left + (containmentContext ? this.containment.scrollLeft() : 0),\n top: position.top + (containmentContext ? this.containment.scrollTop() : 0)\n });\n\n this._containerScrollTop = containmentContext ? this.containment.scrollTop() : doc.scrollTop();\n this._containerScrollLeft = containmentContext ? this.containment.scrollLeft() : doc.scrollLeft();\n\n that._stopDocumentScrolling();\n\n wrapper\n .css({\n top: containmentContext ? this.containment.scrollTop() : 0,\n left: containmentContext ? this.containment.scrollLeft() : 0,\n position: containmentContext ? \"absolute\" : \"fixed\"\n })\n .addClass(MAXIMIZEDSTATE);\n\n that.options.isMaximized = true;\n\n that._onDocumentResize();\n });\n\n return this;\n },\n\n _stopDocumentScrolling: function() {\n var that = this;\n var containment = that.containment;\n\n if (containment && !that._isPinned) {\n that._storeOverflowRule(containment);\n containment.css(OVERFLOW, HIDDEN);\n that.wrapper.css({\n maxWidth: containment.innerWidth(),\n maxHeight: containment.innerHeight()\n });\n return;\n }\n\n var $body = $(\"body\");\n that._storeOverflowRule($body);\n $body.css(OVERFLOW, HIDDEN);\n\n var $html = $(\"html\");\n that._storeOverflowRule($html);\n $html.css(OVERFLOW, HIDDEN);\n },\n\n _enableDocumentScrolling: function() {\n var that = this;\n var containment = that.containment;\n\n if (containment && !that._isPinned) {\n that._restoreOverflowRule(containment);\n that.wrapper.css({\n maxWidth: containment.width,\n maxHeight: containment.height\n });\n return;\n }\n\n that._restoreOverflowRule($(document.body));\n that._restoreOverflowRule($(\"html\"));\n },\n\n _storeOverflowRule: function($element) {\n if (this._isOverflowStored($element)) {\n return;\n }\n\n var overflowRule = $element.get(0).style.overflow;\n\n if (typeof overflowRule === \"string\") {\n $element.data(DATADOCOVERFLOWRULE, overflowRule);\n }\n },\n\n _isOverflowStored: function($element) {\n return typeof $element.data(DATADOCOVERFLOWRULE) === \"string\";\n },\n\n _restoreOverflowRule: function($element) {\n var overflowRule = $element.data(DATADOCOVERFLOWRULE);\n\n if (overflowRule !== null && overflowRule !== undefined$1) {\n $element.css(OVERFLOW, overflowRule);\n $element.removeData(DATADOCOVERFLOWRULE);\n } else {\n $element.css(OVERFLOW, \"\");\n }\n },\n\n isMaximized: function() {\n return this.options.isMaximized;\n },\n\n minimize: function() {\n this._sizingAction(\"minimize\", function() {\n var that = this;\n\n that.wrapper.css({\n height: \"\",\n minHeight: \"\"\n });\n\n that.element.hide();\n\n that.options.isMinimized = true;\n });\n\n this.wrapper.attr(\"aria-labelled-by\", this.element.attr(\"aria-labelled-by\"));\n this.wrapper.addClass(KWINDOWMINIMIZED);\n\n this._updateBoundaries();\n\n return this;\n },\n\n isMinimized: function() {\n return this.options.isMinimized;\n },\n\n pin: function() {\n var that = this,\n win = $(window),\n wrapper = that.wrapper,\n options = that.options,\n position = options.position,\n top = this.containment ? getPosition(wrapper[0]).top + toInt(this.containment, \"borderTopWidth\") : toInt(wrapper, \"top\"),\n left = this.containment ? getPosition(wrapper[0]).left + toInt(this.containment, \"borderLeftWidth\") : toInt(wrapper, \"left\");\n\n if (!that.options.isMaximized) {\n position.top = top;\n position.left = left;\n\n if (that._scrollIsAppended && (!this.containment || this.containment.css(\"position\") !== \"fixed\")) {\n\n position.top -= win.scrollTop();\n position.left -= win.scrollLeft();\n that._scrollIsAppended = false;\n }\n\n wrapper.css(extend(position, { position: \"fixed\" }));\n var pinIcon = wrapper.children(KWINDOWTITLEBAR).find(KPINICONCLASSSELECTOR).eq(0);\n if (pinIcon.length > 0) {\n kendo.ui.icon(pinIcon, { icon: \"unpin\" });\n }\n\n that._isPinned = true;\n that.options.pinned = true;\n\n if (this.containment) {\n options.maxWidth = options.maxHeight = Infinity;\n wrapper.css({\n maxWidth: \"\",\n maxHeight: \"\"\n });\n }\n }\n },\n\n unpin: function() {\n var that = this,\n win = $(window),\n wrapper = that.wrapper,\n options = that.options,\n position = that.options.position,\n containment = that.containment,\n top = parseInt(wrapper.css(\"top\"), 10) + win.scrollTop(),\n left = parseInt(wrapper.css(\"left\"), 10) + win.scrollLeft();\n\n if (!that.options.isMaximized) {\n that._isPinned = false;\n that._scrollIsAppended = true;\n that.options.pinned = false;\n\n if (containment) {\n that._updateBoundaries();\n\n options.maxWidth = Math.min(containment.width, options.maxWidth);\n options.maxHeight = Math.min(containment.height - toInt(wrapper, \"padding-top\"), options.maxHeight);\n\n wrapper.css({\n maxWidth: options.maxWidth,\n maxHeight: options.maxHeight\n });\n\n if (top < containment.position.top) {\n top = that.minTop;\n } else if (top > containment.position.top + containment.height) {\n top = that.maxTop;\n } else {\n top = top + containment.scrollTop() - (containment.position.top + toInt(containment, \"border-top-width\"));\n }\n\n if (left < containment.position.left) {\n left = that.minLeft;\n } else if (left > containment.position.left + containment.width) {\n left = that.maxLeft;\n } else {\n left = left + containment.scrollLeft() - (containment.position.left + toInt(containment, \"border-left-width\"));\n }\n\n }\n\n position.top = constrain(top, that.minTop, that.maxTop);\n position.left = constrain(left, that.minLeft, that.maxLeft);\n\n wrapper.css(extend(position, { position: \"\" }));\n var pinIcon = wrapper.children(KWINDOWTITLEBAR).find(KUNPINICONCLASSSELECTOR).eq(0);\n if (pinIcon.length > 0) {\n kendo.ui.icon(pinIcon, { icon: \"pin\" });\n }\n }\n },\n\n _onDocumentResize: function() {\n var that = this,\n wrapper = that.wrapper,\n wnd = $(window),\n zoomLevel = kendo.support.zoomLevel(),\n contentBoxSizing = wrapper.css(\"box-sizing\") == \"content-box\",\n w, h;\n\n if (!that.options.isMaximized) {\n return;\n }\n\n var lrBorderWidth = contentBoxSizing ? toInt(wrapper, \"border-left-width\") + toInt(wrapper, \"border-right-width\") : 0;\n var tbBorderWidth = contentBoxSizing ? toInt(wrapper, \"border-top-width\") + toInt(wrapper, \"border-bottom-width\") : 0;\n var paddingTop = contentBoxSizing ? toInt(wrapper, \"padding-top\") : 0;\n\n if (that.containment && !that._isPinned) {\n w = that.containment.innerWidth() - lrBorderWidth;\n h = that.containment.innerHeight() - (tbBorderWidth + paddingTop);\n } else {\n w = wnd.width() / zoomLevel - lrBorderWidth;\n h = wnd.height() / zoomLevel - (tbBorderWidth + paddingTop);\n }\n\n wrapper.css({\n width: w,\n height: h\n });\n that.options.width = w;\n that.options.height = h;\n\n that.resize();\n },\n\n refresh: function(options) {\n var that = this,\n initOptions = that.options,\n element = $(that.element),\n iframe,\n showIframe,\n url;\n\n if (!isPlainObject(options)) {\n options = { url: options };\n }\n\n options = extend(initOptions.content, options);\n\n showIframe = defined(initOptions.iframe) ? initOptions.iframe : options.iframe;\n\n url = options.url;\n\n if (url) {\n if (!defined(showIframe)) {\n showIframe = !isLocalUrl(url);\n }\n\n if (!showIframe) {\n // perform AJAX request\n that._ajaxRequest(options);\n } else {\n iframe = element.find(\".\" + KCONTENTFRAME)[0];\n\n if (iframe) {\n // refresh existing iframe\n iframe.src = url || iframe.src;\n } else {\n // render new iframe\n element.html(templates.contentFrame(extend({}, initOptions, { content: options })));\n }\n\n element.find(\".\" + KCONTENTFRAME)\n .off(\"load\" + NS)\n .on(\"load\" + NS, this._triggerRefresh.bind(this));\n }\n } else {\n if (options.template) {\n // refresh template\n that.content(template(options.template)({}));\n }\n\n that.trigger(REFRESH);\n }\n\n element.toggleClass(\"k-window-iframecontent\", !!showIframe);\n\n return that;\n },\n\n _triggerRefresh: function() {\n this.trigger(REFRESH);\n },\n\n _ajaxComplete: function() {\n clearTimeout(this._loadingIconTimeout);\n this.wrapper.find(REFRESHICONSELECTOR).removeClass(LOADINGICONCLASS);\n },\n\n _ajaxError: function(xhr, status) {\n this.trigger(ERROR, { status: status, xhr: xhr });\n },\n\n _ajaxSuccess: function(contentTemplate) {\n return function(data) {\n var html = data;\n if (contentTemplate) {\n html = template(contentTemplate)(data || {});\n }\n\n this.content(html, data);\n this.element.prop(\"scrollTop\", 0);\n\n this.trigger(REFRESH);\n };\n },\n\n _showLoading: function() {\n this.wrapper.find(REFRESHICONSELECTOR).addClass(LOADINGICONCLASS);\n },\n\n _ajaxRequest: function(options) {\n this._loadingIconTimeout = setTimeout(this._showLoading.bind(this), 100);\n\n $.ajax(extend({\n type: \"GET\",\n dataType: \"html\",\n cache: false,\n error: this._ajaxError.bind(this),\n complete: this._ajaxComplete.bind(this),\n success: this._ajaxSuccess(options.template).bind(this)\n }, options));\n },\n\n _destroy: function() {\n if (this.resizing) {\n this.resizing.destroy();\n }\n\n if (this.dragging) {\n this.dragging.destroy();\n }\n\n this.wrapper.off(NS)\n .children(KWINDOWCONTENT).off(NS).end()\n .find(\".k-resize-handle,.k-window-titlebar\").off(NS);\n\n $(window).off(\"resize\" + NS + this._marker);\n $(window).off(MODAL_NS);\n $(window).off(NS);\n\n clearTimeout(this._loadingIconTimeout);\n\n Widget.fn.destroy.call(this);\n\n this.unbind(undefined$1);\n\n kendo.destroy(this.wrapper);\n },\n\n destroy: function() {\n this._destroy();\n\n if (this.options.modal) {\n this._removeOverlay(true);\n }\n\n this.wrapper.empty().remove();\n\n this.wrapper = this.appendTo = this.element = $();\n },\n\n _createWindow: function() {\n var contentHtml = this.element,\n options = this.options,\n iframeSrcAttributes,\n wrapper,\n isRtl = kendo.support.isRtl(contentHtml);\n\n if (options.scrollable === false) {\n contentHtml.css(\"overflow\", \"hidden\");\n }\n\n wrapper = $(templates.wrapper(options));\n\n // Collect the src attributes of all iframes and then set them to empty string.\n // This seems to fix this IE9 \"feature\": http://msdn.microsoft.com/en-us/library/gg622929%28v=VS.85%29.aspx?ppud=4\n iframeSrcAttributes = contentHtml.find(\"iframe:not(.k-content-frame)\").map(function() {\n var src = this.getAttribute(\"src\");\n this.src = \"\";\n return src;\n });\n\n // Make sure the wrapper is appended to the body only once. IE9+ will throw exceptions if you move iframes in DOM\n wrapper\n .toggleClass(\"k-rtl\", isRtl)\n .attr(\"tabindex\", 0)\n .append(contentHtml)\n .find(\"iframe:not(.k-content-frame)\").each(function(index) {\n // Restore the src attribute of the iframes when they are part of the live DOM tree\n this.src = iframeSrcAttributes[index];\n });\n\n if (this.containment) {\n this.containment.prepend(wrapper);\n } else if (this.appendTo) {\n wrapper.appendTo(this.appendTo);\n }\n\n wrapper.find(\".k-window-title\")\n .css(isRtl ? \"left\" : \"right\", outerWidth(wrapper.find(\".k-window-titlebar-actions\")) + 10);\n\n contentHtml.css(\"visibility\", \"\").show();\n\n contentHtml.find(\"[data-role=editor]\").each(function() {\n var editor = $(this).data(\"kendoEditor\");\n\n if (editor) {\n editor.refresh();\n }\n });\n\n wrapper = contentHtml = null;\n }\n });\n\n templates = {\n wrapper: template(function () { return \"\"; }),\n action: template(function (ref) {\n var name = ref.name;\n var icon = ref.icon;\n\n var iconName = (icon || \"\").toLowerCase() || name.toLowerCase();\n if (iconName == \"restore\") { iconName = \"window-restore\"; }\n\n return kendo.html.renderButton((\"\"), { icon: iconName, fillMode: \"flat\" });\n }),\n titlebar: template(function (ref) {\n var title = ref.title;\n\n return \" \";\n }\n ),\n overlay: \"\",\n contentFrame: template(function (ref) {\n var title = ref.title;\n var content = ref.content;\n\n return \"\";\n }\n ),\n resizeHandle: template(function (data) { return (\"\"); })\n };\n\n\n function WindowResizing(wnd) {\n var that = this;\n that.owner = wnd;\n that._preventDragging = false;\n that._draggable = new Draggable(wnd.wrapper, {\n filter: \">\" + KWINDOWRESIZEHANDLES,\n group: wnd.wrapper.id + \"-resizing\",\n dragstart: that.dragstart.bind(that),\n drag: that.drag.bind(that),\n dragend: that.dragend.bind(that)\n });\n\n that._draggable.userEvents.bind(\"press\", that.addOverlay.bind(that));\n that._draggable.userEvents.bind(\"release\", that.removeOverlay.bind(that));\n }\n\n WindowResizing.prototype = {\n addOverlay: function() {\n this.owner.wrapper.append(templates.overlay);\n },\n removeOverlay: function() {\n this.owner.wrapper.find(KOVERLAY).remove();\n },\n dragstart: function(e) {\n var that = this;\n var wnd = that.owner;\n var wrapper = wnd.wrapper;\n\n that._preventDragging = wnd.trigger(RESIZESTART);\n if (that._preventDragging) {\n return;\n }\n\n that.elementPadding = parseInt(wrapper.css(\"padding-top\"), 10);\n that.initialPosition = kendo.getOffset(wrapper, \"position\");\n\n that.resizeDirection = e.currentTarget.prop(\"className\").replace(\"k-resize-handle k-resize-\", \"\");\n\n that.initialSize = {\n width: wrapper.outerWidth(),\n height: wrapper.outerHeight()\n };\n\n wnd._updateBoundaries();\n\n that.containerOffset = wnd.containment ? wnd.containment.position : kendo.getOffset(wnd.appendTo);\n\n var offsetParent = wrapper.offsetParent();\n\n if (offsetParent.is(\"html\")) {\n that.containerOffset.top = that.containerOffset.left = 0;\n } else {\n var marginTop = offsetParent.css(\"margin-top\");\n var marginLeft = offsetParent.css(\"margin-left\");\n var hasMargin = !zero.test(marginTop) || !zero.test(marginLeft);\n if (hasMargin) {\n var wrapperPosition = getPosition(wrapper[0]);\n var relativeElMarginLeft = wrapperPosition.left - that.containerOffset.left - that.initialPosition.left;\n var relativeElMarginTop = wrapperPosition.top - that.containerOffset.top - that.initialPosition.top;\n\n that._relativeElMarginLeft = relativeElMarginLeft > 1 ? relativeElMarginLeft : 0;\n that._relativeElMarginTop = relativeElMarginTop > 1 ? relativeElMarginTop : 0;\n\n that.initialPosition.left += that._relativeElMarginLeft;\n that.initialPosition.top += that._relativeElMarginTop;\n }\n }\n\n wrapper\n .children(KWINDOWRESIZEHANDLES).not(e.currentTarget).hide();\n\n $(BODY).css(CURSOR, e.currentTarget.css(CURSOR));\n },\n drag: function(e) {\n if (this._preventDragging) {\n return;\n }\n var that = this,\n wnd = that.owner,\n wrapper = wnd.wrapper,\n options = wnd.options,\n position = options.position,\n direction = that.resizeDirection,\n containerOffset = that.containerOffset,\n initialPosition = that.initialPosition,\n initialSize = that.initialSize,\n containmentContext = wnd.containment && !wnd._isPinned,\n rtl = kendo.support.isRtl(wnd.containment),\n leftRtlOffset = containmentContext && rtl && wnd.containment.innerWidth() > wnd.containment.width ? kendo.support.scrollbar() : 0,\n scrollOffset = containmentContext ? { top: wnd.containment.scrollTop(), left: wnd.containment.scrollLeft() } : { top: 0, left: 0 },\n newWidth, newHeight,\n windowBottom, windowRight,\n x = Math.max(e.x.location, 0),\n y = Math.max(e.y.location, 0);\n\n if (direction.indexOf(\"e\") >= 0) {\n\n if (wnd.containment && x - initialSize.width >= wnd.maxLeft - scrollOffset.left + containerOffset.left + leftRtlOffset) {\n newWidth = wnd.maxLeft + leftRtlOffset - initialPosition.left + initialSize.width - scrollOffset.left;\n } else {\n newWidth = x - initialPosition.left - containerOffset.left;\n }\n\n wrapper.outerWidth(constrain(newWidth, options.minWidth, options.maxWidth));\n } else if (direction.indexOf(\"w\") >= 0) {\n windowRight = initialPosition.left + initialSize.width + containerOffset.left;\n newWidth = constrain(windowRight - x, options.minWidth, options.maxWidth);\n position.left = windowRight - newWidth - containerOffset.left - leftRtlOffset - (that._relativeElMarginLeft || 0) + scrollOffset.left;\n\n if (wnd.containment && position.left <= wnd.minLeft) {\n position.left = wnd.minLeft;\n newWidth = constrain(windowRight - leftRtlOffset - position.left - containerOffset.left + scrollOffset.left, options.minWidth, options.maxWidth);\n }\n\n wrapper.css({\n left: position.left,\n width: newWidth\n });\n }\n\n var newWindowTop = y;\n if (wnd.options.pinned) {\n newWindowTop -= $(window).scrollTop();\n }\n if (direction.indexOf(\"s\") >= 0) {\n newHeight = newWindowTop - initialPosition.top - that.elementPadding - containerOffset.top;\n\n if (newWindowTop - initialSize.height - that.elementPadding >= wnd.maxTop + containerOffset.top - scrollOffset.top) {\n newHeight = wnd.maxTop - initialPosition.top + initialSize.height - scrollOffset.top;\n }\n\n wrapper.outerHeight(constrain(newHeight, options.minHeight, options.maxHeight));\n } else if (direction.indexOf(\"n\") >= 0) {\n windowBottom = initialPosition.top + initialSize.height + containerOffset.top;\n newHeight = constrain(windowBottom - newWindowTop, options.minHeight, options.maxHeight);\n position.top = windowBottom - newHeight - containerOffset.top - (that._relativeElMarginTop || 0) + scrollOffset.top;\n\n if (position.top <= wnd.minTop && wnd.containment) {\n position.top = wnd.minTop;\n newHeight = constrain(windowBottom - position.top - containerOffset.top + scrollOffset.top, options.minHeight, options.maxHeight);\n }\n\n wrapper.css({\n top: position.top,\n height: newHeight\n });\n }\n\n if (newWidth) {\n wnd.options.width = newWidth + \"px\";\n }\n if (newHeight) {\n wnd.options.height = newHeight + \"px\";\n }\n\n wnd.resize();\n },\n dragend: function(e) {\n if (this._preventDragging) {\n return;\n }\n\n var that = this,\n wnd = that.owner,\n wrapper = wnd.wrapper;\n\n wrapper\n .children(KWINDOWRESIZEHANDLES).not(e.currentTarget).show();\n\n $(BODY).css(CURSOR, \"\");\n\n if (wnd.touchScroller) {\n wnd.touchScroller.reset();\n }\n\n if (e.keyCode == 27) {\n wrapper.css(that.initialPosition)\n .css(that.initialSize);\n }\n\n wnd.trigger(RESIZEEND);\n\n return false;\n },\n destroy: function() {\n if (this._draggable) {\n this._draggable.destroy();\n }\n\n this._draggable = this.owner = null;\n }\n };\n\n function WindowDragging(wnd, dragHandle, clickMoveClick) {\n var that = this,\n filter = dragHandle;\n\n if (clickMoveClick) {\n filter += \",.k-overlay\";\n }\n\n that.owner = wnd;\n that._preventDragging = false;\n that._draggable = new Draggable(wnd.wrapper, {\n filter: dragHandle,\n group: wnd.wrapper.id + \"-moving\",\n clickMoveClick: clickMoveClick,\n dragstart: that.dragstart.bind(that),\n drag: that.drag.bind(that),\n dragend: that.dragend.bind(that),\n dragcancel: that.dragcancel.bind(that)\n });\n\n that._draggable.userEvents.stopPropagation = false;\n }\n\n WindowDragging.prototype = {\n dragstart: function(e) {\n var wnd = this.owner,\n draggable = wnd.options.draggable,\n element = wnd.element,\n actions = element.find(\".k-window-titlebar-actions\"),\n containerOffset = kendo.getOffset(wnd.appendTo);\n\n this._preventDragging = wnd.trigger(DRAGSTART) || !draggable;\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n\n wnd.initialWindowPosition = kendo.getOffset(wnd.wrapper, \"position\");\n\n wnd.initialPointerPosition = {\n left: wnd.options.position.left,\n top: wnd.options.position.top\n };\n\n wnd.startPosition = {\n left: e.x.client - wnd.initialWindowPosition.left,\n top: e.y.client - wnd.initialWindowPosition.top\n };\n\n wnd._updateBoundaries();\n if (!wnd.containment) {\n if (actions.length > 0) {\n wnd.minLeft = outerWidth(actions) + parseInt(actions.css(\"right\"), 10) - outerWidth(element);\n } else {\n wnd.minLeft = 20 - outerWidth(element); // at least 20px remain visible\n }\n\n wnd.minLeft -= containerOffset.left;\n wnd.minTop = -containerOffset.top;\n }\n\n $(templates.overlay).appendTo(wnd.wrapper).css({ opacity: 0 });\n\n wnd.wrapper.children(KWINDOWRESIZEHANDLES).hide();\n\n $(BODY).css(CURSOR, e.currentTarget.css(CURSOR));\n },\n\n drag: function(e) {\n var wnd = this.owner;\n var position = wnd.options.position;\n var axis = wnd.options.draggable.axis;\n var left;\n var top;\n\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n\n if (!axis || axis.toLowerCase() === \"x\") {\n left = e.x.client - wnd.startPosition.left;\n\n if (wnd.containment && !wnd._isPinned) {\n left += wnd.containment.scrollLeft();\n }\n\n position.left = constrain(left, wnd.minLeft, wnd.maxLeft);\n }\n\n if (!axis || axis.toLowerCase() === \"y\") {\n top = e.y.client - wnd.startPosition.top;\n\n if (wnd.containment && !wnd._isPinned) {\n top += wnd.containment.scrollTop();\n }\n\n position.top = constrain(top, wnd.minTop, wnd.maxTop);\n }\n\n if (kendo.support.transforms) {\n $(wnd.wrapper).css(\n \"transform\", \"translate(\" +\n (position.left - wnd.initialPointerPosition.left) + \"px, \" +\n (position.top - wnd.initialPointerPosition.top) + \"px)\"\n );\n } else {\n $(wnd.wrapper).css(position);\n }\n\n },\n\n _finishDrag: function() {\n var wnd = this.owner;\n\n wnd.wrapper\n .children(KWINDOWRESIZEHANDLES).toggle(!wnd.options.isMinimized).end()\n .find(KOVERLAY).remove();\n\n $(BODY).css(CURSOR, \"\");\n },\n\n dragcancel: function(e) {\n if (this._preventDragging) {\n return;\n }\n this._finishDrag();\n\n e.currentTarget.closest(KWINDOW).css(this.owner.initialWindowPosition);\n },\n\n dragend: function() {\n var wnd = this.owner;\n\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n\n $(wnd.wrapper)\n .css(wnd.options.position)\n .css(\"transform\", \"\");\n\n this._finishDrag();\n\n wnd.trigger(DRAGEND);\n\n return false;\n },\n destroy: function() {\n if (this._draggable) {\n this._draggable.destroy();\n }\n\n this._draggable = this.owner = null;\n }\n };\n\n kendo.ui.plugin(Window);\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}