1 | origDescriptors =
|
2 | 'innerWidth': Object.getOwnPropertyDescriptor(window, 'innerWidth')
|
3 | 'innerHeight': Object.getOwnPropertyDescriptor(window, 'innerHeight')
|
4 |
|
5 | module.exports = new ()->
|
6 | overwritten = false
|
7 | current = width:window.innerWidth, height:window.innerHeight
|
8 |
|
9 | getReal = (dimension)->
|
10 | dimension = 'inner'+dimension.replace /\b./, (letter)-> letter.toUpperCase()
|
11 | origDescriptors[dimension].get.call(window)
|
12 |
|
13 | overwrite = ()-> unless overwritten
|
14 | overwritten = true
|
15 |
|
16 | Object.defineProperty window, 'innerWidth',
|
17 | configurable: true
|
18 | get: ()-> current.width
|
19 | set: (newValue)-> current.width = newValue
|
20 |
|
21 | Object.defineProperty window, 'innerHeight',
|
22 | configurable: true
|
23 | get: ()-> current.height
|
24 | set: (newValue)-> current.height = newValue
|
25 |
|
26 |
|
27 | @simulate = (width, height)->
|
28 | current.width = width if width
|
29 | current.height = height if height
|
30 |
|
31 | overwrite()
|
32 | event = document.createEvent('Event')
|
33 | event.initEvent('resize', true, false)
|
34 | window.dispatchEvent(event)
|
35 |
|
36 |
|
37 | @restore = ()->
|
38 | Object.defineProperty window, 'innerWidth', origDescriptors.innerWidth
|
39 | Object.defineProperty window, 'innerHeight', origDescriptors.innerHeight
|
40 |
|
41 |
|
42 | return @ |
\ | No newline at end of file |