diamonds 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +36 -0
  3. data/lib/diamonds.rb +74 -0
  4. data/lib/diamonds/Gemfile +28 -0
  5. data/lib/diamonds/README.md +254 -0
  6. data/lib/diamonds/Rakefile +5 -0
  7. data/lib/diamonds/apps/application.rb +15 -0
  8. data/lib/diamonds/apps/library.rb +321 -0
  9. data/lib/diamonds/apps/user_app.rb +5 -0
  10. data/lib/diamonds/config.ru +98 -0
  11. data/lib/diamonds/db/mysiteDB Back.sqlite3 +0 -0
  12. data/lib/diamonds/db/mysiteDB.sqlite3 +0 -0
  13. data/lib/diamonds/gems/auto_launch_browser.rb +22 -0
  14. data/lib/diamonds/gems/io.rb +146 -0
  15. data/lib/diamonds/gems/ruby_to_js.rb +173 -0
  16. data/lib/diamonds/gems/server_utils.rb +96 -0
  17. data/lib/diamonds/lib/opal-browser.rb +1 -0
  18. data/lib/diamonds/lib/opal/browser.rb +4 -0
  19. data/lib/diamonds/opal-browser.gemspec +21 -0
  20. data/lib/diamonds/opal/browser.rb +11 -0
  21. data/lib/diamonds/opal/browser/animation_frame.rb +111 -0
  22. data/lib/diamonds/opal/browser/canvas.rb +321 -0
  23. data/lib/diamonds/opal/browser/canvas/data.rb +63 -0
  24. data/lib/diamonds/opal/browser/canvas/gradient.rb +27 -0
  25. data/lib/diamonds/opal/browser/canvas/style.rb +113 -0
  26. data/lib/diamonds/opal/browser/canvas/text.rb +45 -0
  27. data/lib/diamonds/opal/browser/console.rb +103 -0
  28. data/lib/diamonds/opal/browser/cookies.rb +133 -0
  29. data/lib/diamonds/opal/browser/css.rb +24 -0
  30. data/lib/diamonds/opal/browser/css/declaration.rb +83 -0
  31. data/lib/diamonds/opal/browser/css/rule.rb +48 -0
  32. data/lib/diamonds/opal/browser/css/rule/style.rb +16 -0
  33. data/lib/diamonds/opal/browser/css/style_sheet.rb +83 -0
  34. data/lib/diamonds/opal/browser/css/unit.rb +188 -0
  35. data/lib/diamonds/opal/browser/database/sql.rb +194 -0
  36. data/lib/diamonds/opal/browser/delay.rb +78 -0
  37. data/lib/diamonds/opal/browser/dom.rb +84 -0
  38. data/lib/diamonds/opal/browser/dom/attribute.rb +26 -0
  39. data/lib/diamonds/opal/browser/dom/builder.rb +88 -0
  40. data/lib/diamonds/opal/browser/dom/cdata.rb +9 -0
  41. data/lib/diamonds/opal/browser/dom/character_data.rb +73 -0
  42. data/lib/diamonds/opal/browser/dom/comment.rb +9 -0
  43. data/lib/diamonds/opal/browser/dom/document.rb +149 -0
  44. data/lib/diamonds/opal/browser/dom/document_fragment.rb +7 -0
  45. data/lib/diamonds/opal/browser/dom/element.rb +474 -0
  46. data/lib/diamonds/opal/browser/dom/element/attributes.rb +87 -0
  47. data/lib/diamonds/opal/browser/dom/element/data.rb +67 -0
  48. data/lib/diamonds/opal/browser/dom/element/image.rb +23 -0
  49. data/lib/diamonds/opal/browser/dom/element/input.rb +28 -0
  50. data/lib/diamonds/opal/browser/dom/element/offset.rb +89 -0
  51. data/lib/diamonds/opal/browser/dom/element/position.rb +46 -0
  52. data/lib/diamonds/opal/browser/dom/element/scroll.rb +136 -0
  53. data/lib/diamonds/opal/browser/dom/element/select.rb +36 -0
  54. data/lib/diamonds/opal/browser/dom/element/size.rb +34 -0
  55. data/lib/diamonds/opal/browser/dom/element/template.rb +9 -0
  56. data/lib/diamonds/opal/browser/dom/element/textarea.rb +24 -0
  57. data/lib/diamonds/opal/browser/dom/mutation_observer.rb +178 -0
  58. data/lib/diamonds/opal/browser/dom/node.rb +464 -0
  59. data/lib/diamonds/opal/browser/dom/node_set.rb +110 -0
  60. data/lib/diamonds/opal/browser/dom/text.rb +36 -0
  61. data/lib/diamonds/opal/browser/effects.rb +50 -0
  62. data/lib/diamonds/opal/browser/event.rb +253 -0
  63. data/lib/diamonds/opal/browser/event/animation.rb +38 -0
  64. data/lib/diamonds/opal/browser/event/audio_processing.rb +33 -0
  65. data/lib/diamonds/opal/browser/event/base.rb +430 -0
  66. data/lib/diamonds/opal/browser/event/before_unload.rb +15 -0
  67. data/lib/diamonds/opal/browser/event/clipboard.rb +28 -0
  68. data/lib/diamonds/opal/browser/event/close.rb +47 -0
  69. data/lib/diamonds/opal/browser/event/composition.rb +50 -0
  70. data/lib/diamonds/opal/browser/event/custom.rb +65 -0
  71. data/lib/diamonds/opal/browser/event/device_light.rb +23 -0
  72. data/lib/diamonds/opal/browser/event/device_motion.rb +51 -0
  73. data/lib/diamonds/opal/browser/event/device_orientation.rb +48 -0
  74. data/lib/diamonds/opal/browser/event/device_proximity.rb +33 -0
  75. data/lib/diamonds/opal/browser/event/drag.rb +119 -0
  76. data/lib/diamonds/opal/browser/event/focus.rb +39 -0
  77. data/lib/diamonds/opal/browser/event/gamepad.rb +60 -0
  78. data/lib/diamonds/opal/browser/event/hash_change.rb +28 -0
  79. data/lib/diamonds/opal/browser/event/keyboard.rb +115 -0
  80. data/lib/diamonds/opal/browser/event/message.rb +70 -0
  81. data/lib/diamonds/opal/browser/event/mouse.rb +254 -0
  82. data/lib/diamonds/opal/browser/event/page_transition.rb +23 -0
  83. data/lib/diamonds/opal/browser/event/pop_state.rb +33 -0
  84. data/lib/diamonds/opal/browser/event/progress.rb +43 -0
  85. data/lib/diamonds/opal/browser/event/sensor.rb +15 -0
  86. data/lib/diamonds/opal/browser/event/storage.rb +43 -0
  87. data/lib/diamonds/opal/browser/event/touch.rb +60 -0
  88. data/lib/diamonds/opal/browser/event/ui.rb +38 -0
  89. data/lib/diamonds/opal/browser/event/wheel.rb +49 -0
  90. data/lib/diamonds/opal/browser/event_source.rb +70 -0
  91. data/lib/diamonds/opal/browser/history.rb +90 -0
  92. data/lib/diamonds/opal/browser/http.rb +169 -0
  93. data/lib/diamonds/opal/browser/http/binary.rb +58 -0
  94. data/lib/diamonds/opal/browser/http/headers.rb +109 -0
  95. data/lib/diamonds/opal/browser/http/request.rb +344 -0
  96. data/lib/diamonds/opal/browser/http/response.rb +115 -0
  97. data/lib/diamonds/opal/browser/immediate.rb +163 -0
  98. data/lib/diamonds/opal/browser/interval.rb +111 -0
  99. data/lib/diamonds/opal/browser/location.rb +87 -0
  100. data/lib/diamonds/opal/browser/navigator.rb +173 -0
  101. data/lib/diamonds/opal/browser/screen.rb +66 -0
  102. data/lib/diamonds/opal/browser/socket.rb +123 -0
  103. data/lib/diamonds/opal/browser/storage.rb +252 -0
  104. data/lib/diamonds/opal/browser/support.rb +287 -0
  105. data/lib/diamonds/opal/browser/utils.rb +74 -0
  106. data/lib/diamonds/opal/browser/version.rb +3 -0
  107. data/lib/diamonds/opal/browser/window.rb +120 -0
  108. data/lib/diamonds/opal/browser/window/scroll.rb +59 -0
  109. data/lib/diamonds/opal/browser/window/size.rb +59 -0
  110. data/lib/diamonds/opal/browser/window/view.rb +36 -0
  111. data/lib/diamonds/opal/opal-browser.rb +1 -0
  112. data/lib/diamonds/public/__OPAL_SOURCE_MAPS__/application.map +0 -0
  113. data/lib/diamonds/public/javascripts/font-awesome/HELP-US-OUT.txt +7 -0
  114. data/lib/diamonds/public/javascripts/font-awesome/css/font-awesome.css +2026 -0
  115. data/lib/diamonds/public/javascripts/font-awesome/css/font-awesome.min.css +1 -0
  116. data/lib/diamonds/public/javascripts/font-awesome/fonts/FontAwesome.otf +0 -0
  117. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  118. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.svg +640 -0
  119. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  120. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  121. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  122. data/lib/diamonds/public/javascripts/font-awesome/less/animated.less +34 -0
  123. data/lib/diamonds/public/javascripts/font-awesome/less/bordered-pulled.less +25 -0
  124. data/lib/diamonds/public/javascripts/font-awesome/less/core.less +12 -0
  125. data/lib/diamonds/public/javascripts/font-awesome/less/fixed-width.less +6 -0
  126. data/lib/diamonds/public/javascripts/font-awesome/less/font-awesome.less +17 -0
  127. data/lib/diamonds/public/javascripts/font-awesome/less/icons.less +677 -0
  128. data/lib/diamonds/public/javascripts/font-awesome/less/larger.less +13 -0
  129. data/lib/diamonds/public/javascripts/font-awesome/less/list.less +19 -0
  130. data/lib/diamonds/public/javascripts/font-awesome/less/mixins.less +26 -0
  131. data/lib/diamonds/public/javascripts/font-awesome/less/path.less +15 -0
  132. data/lib/diamonds/public/javascripts/font-awesome/less/rotated-flipped.less +20 -0
  133. data/lib/diamonds/public/javascripts/font-awesome/less/stacked.less +20 -0
  134. data/lib/diamonds/public/javascripts/font-awesome/less/variables.less +688 -0
  135. data/lib/diamonds/public/javascripts/font-awesome/scss/_animated.scss +34 -0
  136. data/lib/diamonds/public/javascripts/font-awesome/scss/_bordered-pulled.scss +25 -0
  137. data/lib/diamonds/public/javascripts/font-awesome/scss/_core.scss +12 -0
  138. data/lib/diamonds/public/javascripts/font-awesome/scss/_fixed-width.scss +6 -0
  139. data/lib/diamonds/public/javascripts/font-awesome/scss/_icons.scss +677 -0
  140. data/lib/diamonds/public/javascripts/font-awesome/scss/_larger.scss +13 -0
  141. data/lib/diamonds/public/javascripts/font-awesome/scss/_list.scss +19 -0
  142. data/lib/diamonds/public/javascripts/font-awesome/scss/_mixins.scss +26 -0
  143. data/lib/diamonds/public/javascripts/font-awesome/scss/_path.scss +15 -0
  144. data/lib/diamonds/public/javascripts/font-awesome/scss/_rotated-flipped.scss +20 -0
  145. data/lib/diamonds/public/javascripts/font-awesome/scss/_stacked.scss +20 -0
  146. data/lib/diamonds/public/javascripts/font-awesome/scss/_variables.scss +688 -0
  147. data/lib/diamonds/public/javascripts/font-awesome/scss/font-awesome.scss +17 -0
  148. data/lib/diamonds/public/javascripts/jquery-2.1.4.min.js +4 -0
  149. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  150. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  151. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_flat_10_000000_40x100.png +0 -0
  152. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  153. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  154. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  155. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  156. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  157. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  158. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_222222_256x240.png +0 -0
  159. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_228ef1_256x240.png +0 -0
  160. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_ef8c08_256x240.png +0 -0
  161. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_ffd27a_256x240.png +0 -0
  162. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  163. data/lib/diamonds/public/javascripts/jquery-ui/jquery-ui.min.css +7 -0
  164. data/lib/diamonds/public/javascripts/jquery-ui/jquery-ui.min.js +13 -0
  165. data/lib/diamonds/public/javascripts/jquery-ui/jquery-ui.structure.min.css +5 -0
  166. data/lib/diamonds/public/javascripts/jquery-ui/jquery-ui.theme.min.css +5 -0
  167. data/lib/diamonds/public/javascripts/jquery.js +4 -0
  168. data/lib/diamonds/public/javascripts/jquery.ui.touch-punch.min.js +11 -0
  169. data/lib/diamonds/public/javascripts/ne pas utiliser version en retard jeezs_editor.js b/data/lib/diamonds/public/javascripts/ne pas utiliser version en retard → jeezs_editor.js +0 -0
  170. data/lib/diamonds/public/javascripts/standalone.js +2316 -0
  171. data/lib/diamonds/public/javascripts/standalone.min.js +1 -0
  172. data/lib/diamonds/public/javascripts/wysiwyg-editor.min.css +1 -0
  173. data/lib/diamonds/public/javascripts/wysiwyg-editor.min.js +1 -0
  174. data/lib/diamonds/public/javascripts/wysiwyg.min.js +1 -0
  175. data/lib/diamonds/user_app/main.rb +45 -0
  176. data/lib/diamonds/version.rb +3 -0
  177. data/lib/diamonds/views/index.erb +35 -0
  178. data/lib/diamonds/views/javascripts/jeezs_editor.js.erb +365 -0
  179. data/lib/diamonds/views/stylesheets/main.css.erb +244 -0
  180. metadata +490 -0
@@ -0,0 +1,39 @@
1
+ module Browser; class Event
2
+
3
+ class Focus < UI
4
+ def self.supported?
5
+ Browser.supports? 'Event.Focus'
6
+ end
7
+
8
+ class Definition < UI::Definition
9
+ def view=(value)
10
+ `#@native.view = #{Native.convert(value)}`
11
+ end
12
+
13
+ def related=(elem)
14
+ `#@native.relatedTarget = #{Native.convert(elem)}`
15
+ end
16
+ end
17
+
18
+ if Browser.supports? 'Event.constructor'
19
+ def self.construct(name, desc)
20
+ `new FocusEvent(#{name}, #{desc})`
21
+ end
22
+ elsif Browser.supports? 'Event.create'
23
+ def self.construct(name, desc)
24
+ %x{
25
+ var event = document.createEvent("FocusEvent");
26
+ event.initFocusEvent(name, desc.bubbles, desc.cancelable,
27
+ desc.view || window, 0, desc.relatedTarget);
28
+
29
+ return event;
30
+ }
31
+ end
32
+ end if supported?
33
+
34
+ def related
35
+ DOM(`#@native.relatedTarget`)
36
+ end
37
+ end
38
+
39
+ end; end
@@ -0,0 +1,60 @@
1
+ module Browser; class Event
2
+
3
+ class Gamepad < Event
4
+ def self.supported?
5
+ Browser.supports? 'Event.Gamepad'
6
+ end
7
+
8
+ class Definition < Definition
9
+ def id=(value)
10
+ `#@native.id = #{value}`
11
+ end
12
+
13
+ def index=(value)
14
+ `#@native.index = #{value}`
15
+ end
16
+
17
+ def at=(value)
18
+ `#@native.timestamp = #{value}`
19
+ end
20
+
21
+ def axes=(value)
22
+ `#@native.axes = #{value}`
23
+ end
24
+
25
+ def buttons=(value)
26
+ `#@native.buttons = #{value}`
27
+ end
28
+ end
29
+
30
+ if Browser.supports? 'Event.constructor'
31
+ def self.construct(name, desc)
32
+ `new GamepadEvent(#{name}, {
33
+ bubbles: desc.bubbles,
34
+ cancelable: desc.cancelable,
35
+ gamepad: desc })`
36
+ end
37
+ end if supported?
38
+
39
+ def id
40
+ `#@native.gamepad.id`
41
+ end
42
+
43
+ def index
44
+ `#@native.gamepad.index`
45
+ end
46
+
47
+ def at
48
+ `#@native.gamepad.timestamp`
49
+ end
50
+
51
+ def axes
52
+ `#@native.gamepad.axes`
53
+ end
54
+
55
+ def buttons
56
+ `#@native.gamepad.buttons`
57
+ end
58
+ end
59
+
60
+ end; end
@@ -0,0 +1,28 @@
1
+ module Browser; class Event
2
+
3
+ class HashChange < Event
4
+ def self.supported?
5
+ Browser.supports? 'Event.HashChange'
6
+ end
7
+
8
+ class Definition < Definition
9
+ def old=(value)
10
+ `#@native.oldURL = #{value}`
11
+ end
12
+
13
+ def new=(value)
14
+ `#@native.newURL = #{value}`
15
+ end
16
+ end
17
+
18
+ if Browser.supports? 'Event.constructor'
19
+ def self.construct(name, desc)
20
+ `new HashChangeEvent(#{name}, #{desc})`
21
+ end
22
+ end if supported?
23
+
24
+ alias_native :old, :oldURL
25
+ alias_native :new, :newURL
26
+ end
27
+
28
+ end; end
@@ -0,0 +1,115 @@
1
+ module Browser; class Event
2
+
3
+ class Keyboard < UI
4
+ def self.supported?
5
+ Browser.supports? 'Event.Keyboard'
6
+ end
7
+
8
+ class Definition < UI::Definition
9
+ def alt!
10
+ `#@native.altKey = true`
11
+ end
12
+
13
+ def ctrl!
14
+ `#@native.ctrlKey = true`
15
+ end
16
+
17
+ def meta!
18
+ `#@native.metaKey = true`
19
+ end
20
+
21
+ def shift!
22
+ `#@native.shiftKey = true`
23
+ end
24
+
25
+ def code=(code)
26
+ `#@native.keyCode = #@native.which = #{code}`
27
+ end
28
+
29
+ def key=(key)
30
+ `#@native.key = #{key}`
31
+ end
32
+
33
+ def char=(char)
34
+ `#@native.char = #@native.charCode = #{char}`
35
+ end
36
+
37
+ def repeat!
38
+ `#@native.repeat = true`
39
+ end
40
+
41
+ def locale=(value)
42
+ `#@native.locale = value`
43
+ end
44
+ end
45
+
46
+ if Browser.supports? 'Event.constructor'
47
+ def self.construct(name, desc)
48
+ `new KeyboardEvent(#{name}, #{desc})`
49
+ end
50
+ elsif Browser.supports? 'Event.create'
51
+ def self.construct(name, desc)
52
+ %x{
53
+ var modifiers = "";
54
+
55
+ if (desc.altKey) {
56
+ modifiers += "Alt ";
57
+ }
58
+
59
+ if (desc.ctrlKey) {
60
+ modifiers += "Ctrl ";
61
+ }
62
+
63
+ if (desc.shiftKey) {
64
+ modifiers += "Shift" ;
65
+ }
66
+
67
+ if (desc.metaKey) {
68
+ modifiers += "Meta ";
69
+ }
70
+
71
+ var event = document.createEvent("KeyboardEvent");
72
+ event.initKeyboardEvent(name, desc.bubbles, desc.cancelable,
73
+ desc.view || window, desc.which, 0,
74
+ modifiers, desc.repeat, desc.locale);
75
+
76
+ return event;
77
+ }
78
+ end
79
+ end if supported?
80
+
81
+ alias_native :alt?, :altKey
82
+ alias_native :ctrl?, :ctrlKey
83
+ alias_native :meta?, :metaKey
84
+ alias_native :shift?, :shiftKey
85
+ alias_native :locale
86
+ alias_native :repeat?, :repeat
87
+
88
+ def key
89
+ `#@native.key || #@native.keyIdentifier || nil`
90
+ end
91
+
92
+ def code
93
+ `#@native.keyCode || #@native.which || nil`
94
+ end
95
+
96
+ def char
97
+ `#@native.char || #@native.charCode || #{code ? code.chr : nil}`
98
+ end
99
+
100
+ alias to_i key
101
+
102
+ def down?
103
+ name.downcase == 'keydown'
104
+ end
105
+
106
+ def press?
107
+ name.downcase == 'keypress'
108
+ end
109
+
110
+ def up?
111
+ name.downcase == 'keyup'
112
+ end
113
+ end
114
+
115
+ end; end
@@ -0,0 +1,70 @@
1
+ require 'buffer'
2
+
3
+ module Browser; class Event
4
+
5
+ class Message < Event
6
+ def self.supported?
7
+ Browser.supports? 'Event.Message'
8
+ end
9
+
10
+ class Definition < Definition
11
+ def data=(value)
12
+ `#@native.data = value`
13
+ end
14
+
15
+ def origin=(value)
16
+ `#@native.origin = value`
17
+ end
18
+
19
+ def source=(value)
20
+ `#@native.source = #{Native.convert(value)}`
21
+ end
22
+ end
23
+
24
+ if Browser.supports? 'Event.constructor'
25
+ def self.construct(name, desc)
26
+ `new MessageEvent(#{name}, #{desc})`
27
+ end
28
+ elsif Browser.supports? 'Event.create'
29
+ def self.construct(name, desc)
30
+ %x{
31
+ var event = document.createEvent("MessageEvent");
32
+ event.initMessageEvent(name, desc.bubbles, desc.cancelable,
33
+ desc.data, desc.origin, "", desc.source || window);
34
+
35
+ return event;
36
+ }
37
+ end
38
+ end if supported?
39
+
40
+ def data
41
+ %x{
42
+ if (window.ArrayBuffer && #@native.data instanceof ArrayBuffer) {
43
+ return #{Buffer.new(`#@native.data`)};
44
+ }
45
+ else if (window.Blob && #@native.data instanceof Blob) {
46
+ return #{Blob.new(`#@native.data`)};
47
+ }
48
+ else {
49
+ return #@native.data;
50
+ }
51
+ }
52
+ end
53
+
54
+ alias_native :origin
55
+
56
+ def source
57
+ %x{
58
+ var source = #@native.source;
59
+
60
+ if (window.Window && source instanceof window.Window) {
61
+ return #{Window.new(`source`)};
62
+ }
63
+ else {
64
+ return nil;
65
+ }
66
+ }
67
+ end
68
+ end
69
+
70
+ end; end
@@ -0,0 +1,254 @@
1
+ module Browser; class Event
2
+
3
+ class Mouse < UI
4
+ def self.supported?
5
+ not $$[:MouseEvent].nil?
6
+ end
7
+
8
+ class Definition < UI::Definition
9
+ class Client
10
+ include Native
11
+
12
+ def x=(value)
13
+ `#@native.clientX = #{value}`
14
+ end
15
+
16
+ def y=(value)
17
+ `#@native.clientY = #{value}`
18
+ end
19
+ end
20
+
21
+ class Layer
22
+ include Native
23
+
24
+ def x=(value)
25
+ `#@native.layerX = #{value}`
26
+ end
27
+
28
+ def y=(value)
29
+ `#@native.layerY = #{value}`
30
+ end
31
+ end
32
+
33
+ class Offset
34
+ include Native
35
+
36
+ def x=(value)
37
+ `#@native.offsetX = #{value}`
38
+ end
39
+
40
+ def y=(value)
41
+ `#@native.offsetY= #{value}`
42
+ end
43
+ end
44
+
45
+ class Page
46
+ include Native
47
+
48
+ def x=(value)
49
+ `#@native.pageX = #{value}`
50
+ end
51
+
52
+ def y=(value)
53
+ `#@native.pageY = #{value}`
54
+ end
55
+ end
56
+
57
+ class Screen
58
+ include Native
59
+
60
+ def x=(value)
61
+ `#@native.screenX = #{value}`
62
+ end
63
+
64
+ def y=(value)
65
+ `#@native.screenY = #{value}`
66
+ end
67
+ end
68
+
69
+ class Ancestor
70
+ include Native
71
+
72
+ def x=(value)
73
+ `#@native.x = #{value}`
74
+ end
75
+
76
+ def y=(value)
77
+ `#@native.y = #{value}`
78
+ end
79
+ end
80
+
81
+ def x=(value)
82
+ `#@native.screenX = #{value}`
83
+ end
84
+
85
+ def y=(value)
86
+ `#@native.screenY = #{value}`
87
+ end
88
+
89
+ def alt!
90
+ `#@native.altKey = true`
91
+ end
92
+
93
+ def ctrl!
94
+ `#@native.ctrlKey = true`
95
+ end
96
+
97
+ def meta!
98
+ `#@native.metaKey = true`
99
+ end
100
+
101
+ def button=(value)
102
+ `#@native.button = #{value}`
103
+ end
104
+
105
+ def client
106
+ Client.new(@native)
107
+ end
108
+
109
+ def layer
110
+ Layer.new(@native)
111
+ end
112
+
113
+ def offset
114
+ Offset.new(@native)
115
+ end
116
+
117
+ def page
118
+ Page.new(@native)
119
+ end
120
+
121
+ def screen
122
+ Screen.new(@native)
123
+ end
124
+
125
+ def ancestor
126
+ Ancestor.new(@native)
127
+ end
128
+
129
+ def related=(elem)
130
+ `#@native.relatedTarget = #{Native.try_convert(elem)}`
131
+ end
132
+
133
+ def from=(elem)
134
+ `#@native.fromElement = #{Native.try_convert(elem)}`
135
+ end
136
+
137
+ def to=(elem)
138
+ `#@native.toElement = #{Native.try_convert(elem)}`
139
+ end
140
+ end
141
+
142
+ if Browser.supports? 'Event.constructor'
143
+ def self.construct(name, desc)
144
+ `new MouseEvent(#{name}, #{desc})`
145
+ end
146
+ elsif Browser.supports? 'Event.create'
147
+ def self.construct(name, desc)
148
+ %x{
149
+ var event = document.createEvent("MouseEvent");
150
+ event.initMouseEvent(name, desc.bubbles, desc.cancelable,
151
+ desc.view || window, desc.detail || 0,
152
+ desc.screenX || 0, desc.screenY || 0,
153
+ desc.clientX || 0, desc.clientY || 0,
154
+ desc.ctrlKey || false, desc.altKey || false,
155
+ desc.shiftKey || false, desc.metaKey || false,
156
+ desc.button || 0, desc.relatedTarget || null);
157
+
158
+ return event;
159
+ }
160
+ end
161
+ end if supported?
162
+
163
+ alias_native :alt?, :altKey
164
+ alias_native :ctrl?, :ctrlKey
165
+ alias_native :meta?, :metaKey
166
+ alias_native :shift?, :shiftKey
167
+ alias_native :button
168
+
169
+ def client
170
+ Position.new(`#@native.clientX`, `#@native.clientY`)
171
+ end
172
+
173
+ def layer
174
+ Position.new(`#@native.layerX`, `#@native.layerY`) unless `#@native.layerX == null`
175
+ end
176
+
177
+ def offset
178
+ Position.new(`#@native.offsetX`, `#@native.offsetY`) unless `#@native.offsetX == null`
179
+ end
180
+
181
+ def page
182
+ Position.new(`#@native.pageX`, `#@native.pageY`) unless `#@native.pageX == null`
183
+ end
184
+
185
+ def screen
186
+ Position.new(`#@native.screenX`, `#@native.screenY`) unless `#@native.screenX == null`
187
+ end
188
+
189
+ def ancestor
190
+ Position.new(`#@native.x`, `#@native.y`) unless `#@native.x == null`
191
+ end
192
+
193
+ def x
194
+ screen.x
195
+ end
196
+
197
+ def y
198
+ screen.y
199
+ end
200
+
201
+ def related
202
+ DOM(`#@native.relatedTarget`) unless `#@native.relatedTarget == null`
203
+ end
204
+
205
+ def from
206
+ DOM(`#@native.fromElement`) unless `#@native.fromElement == null`
207
+ end
208
+
209
+ def to
210
+ DOM(`#@native.toElement`) unless `#@native.toElement == null`
211
+ end
212
+
213
+ def click?
214
+ name.downcase == 'click'
215
+ end
216
+
217
+ def double_click?
218
+ name.downcase == 'dblclick'
219
+ end
220
+
221
+ def down?
222
+ name.downcase == 'mousedown'
223
+ end
224
+
225
+ def enter?
226
+ name.downcase == 'mouseenter'
227
+ end
228
+
229
+ def leave?
230
+ name.downcase == 'mouseleave'
231
+ end
232
+
233
+ def move?
234
+ name.downcase == 'mousemove'
235
+ end
236
+
237
+ def out?
238
+ name.downcase == 'mouseout'
239
+ end
240
+
241
+ def over?
242
+ name.downcase == 'mouseover'
243
+ end
244
+
245
+ def up?
246
+ name.downcase == 'mouseup'
247
+ end
248
+
249
+ def show?
250
+ name.downcase == 'show'
251
+ end
252
+ end
253
+
254
+ end; end