You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
devdocs/assets/javascripts/views/layout/resizer.coffee

47 lines
1.1 KiB

class app.views.Resizer extends app.View
@className: '_resizer'
@events:
dragstart: 'onDragStart'
dragend: 'onDragEnd'
drag: 'onDrag'
@isSupported: ->
'ondragstart' of document.createElement('div') and !app.isMobile()
init: ->
@el.setAttribute('draggable', 'true')
@appendTo $('._app')
@style = $('style[data-resizer]')
@size = @style.getAttribute('data-size')
return
MIN = 250
MAX = 600
resize: (newSize) ->
return unless newSize > 0
newSize = Math.min(Math.max(Math.round(newSize), MIN), MAX)
app.settings.setSize(newSize)
newSize = "#{newSize}px"
@style.innerHTML = @style.innerHTML.replace(new RegExp(@size, 'g'), newSize)
@size = newSize
return
onDragStart: (event) =>
@style.removeAttribute('disabled')
event.dataTransfer.effectAllowed = 'link'
event.dataTransfer.setData('text/plain', '')
return
onDrag: (event) =>
return if @lastDrag and @lastDrag > Date.now() - 50
@lastDrag = Date.now()
@resize event.clientX
return
onDragEnd: (event) =>
@resize event.screenX - window.screenX
return