jquery-drag-rails 2.2.0

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.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in jquery-drag-rails.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Charles Lowell
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Jquery::Drag::Rails
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'jquery-drag-rails'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install jquery-drag-rails
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ directory TempDir = "tmp"
5
+ directory JavaScriptsDir = "vendor/assets/javascripts"
6
+
7
+ desc "import an upstream archive of the jquery drag event"
8
+ task "import" => [TempDir, JavaScriptsDir] do
9
+ archive = ENV['archive'] or fail "specify and archive to import with archive=FILE"
10
+ fail "no such file #{archive}" unless File.exists?(archive)
11
+ sh "cp #{archive} tmp"
12
+ sh "cd tmp && unzip #{archive}"
13
+ sh "rm -rf #{JavaScriptsDir}/*"
14
+ Dir['**/*.js'].each do |file|
15
+ require_name = File.basename(file).gsub(/(.*)-.*\.js$/,'\1.js')
16
+ sh "cp -f #{file} vendor/assets/javascripts/#{require_name}"
17
+ end
18
+ end
19
+
20
+ task "clean" do
21
+ sh "rm -rf tmp/*"
22
+ end
@@ -0,0 +1,17 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/jquery-drag-rails/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Charles Lowell"]
6
+ gem.email = ["cowboyd@thefrontside.net"]
7
+ gem.description = %q{Use jquery-drag special events in rails}
8
+ gem.summary = %q{Adds dragstart, drag, dragend events to any element}
9
+ gem.homepage = "https://github.com/thefrontside/jquery-drag-rails"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "jquery-drag-rails"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Jquery::Drag::Rails::VERSION
17
+ end
@@ -0,0 +1,11 @@
1
+ require "jquery-drag-rails/version"
2
+
3
+ module Jquery
4
+ module Drag
5
+ module Rails
6
+ class Engine < ::Rails::Engine
7
+
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ module Jquery
2
+ module Drag
3
+ module Rails
4
+ VERSION = "2.2.0"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,403 @@
1
+ // encoding: utf-8
2
+ /*!
3
+ * jquery.event.drag - v 2.2
4
+ * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
5
+ * Open Source MIT License - http://threedubmedia.com/code/license
6
+ */
7
+ // Created: 2008-06-04
8
+ // Updated: 2012-05-21
9
+ // REQUIRES: jquery 1.7.x
10
+
11
+ ;(function( $ ){
12
+
13
+ // add the jquery instance method
14
+ $.fn.drag = function( str, arg, opts ){
15
+ // figure out the event type
16
+ var type = typeof str == "string" ? str : "",
17
+ // figure out the event handler...
18
+ fn = $.isFunction( str ) ? str : $.isFunction( arg ) ? arg : null;
19
+ // fix the event type
20
+ if ( type.indexOf("drag") !== 0 )
21
+ type = "drag"+ type;
22
+ // were options passed
23
+ opts = ( str == fn ? arg : opts ) || {};
24
+ // trigger or bind event handler
25
+ return fn ? this.bind( type, opts, fn ) : this.trigger( type );
26
+ };
27
+
28
+ // local refs (increase compression)
29
+ var $event = $.event,
30
+ $special = $event.special,
31
+ // configure the drag special event
32
+ drag = $special.drag = {
33
+
34
+ // these are the default settings
35
+ defaults: {
36
+ which: 1, // mouse button pressed to start drag sequence
37
+ distance: 0, // distance dragged before dragstart
38
+ not: ':input', // selector to suppress dragging on target elements
39
+ handle: null, // selector to match handle target elements
40
+ relative: false, // true to use "position", false to use "offset"
41
+ drop: true, // false to suppress drop events, true or selector to allow
42
+ click: false // false to suppress click events after dragend (no proxy)
43
+ },
44
+
45
+ // the key name for stored drag data
46
+ datakey: "dragdata",
47
+
48
+ // prevent bubbling for better performance
49
+ noBubble: true,
50
+
51
+ // count bound related events
52
+ add: function( obj ){
53
+ // read the interaction data
54
+ var data = $.data( this, drag.datakey ),
55
+ // read any passed options
56
+ opts = obj.data || {};
57
+ // count another realted event
58
+ data.related += 1;
59
+ // extend data options bound with this event
60
+ // don't iterate "opts" in case it is a node
61
+ $.each( drag.defaults, function( key, def ){
62
+ if ( opts[ key ] !== undefined )
63
+ data[ key ] = opts[ key ];
64
+ });
65
+ },
66
+
67
+ // forget unbound related events
68
+ remove: function(){
69
+ $.data( this, drag.datakey ).related -= 1;
70
+ },
71
+
72
+ // configure interaction, capture settings
73
+ setup: function(){
74
+ // check for related events
75
+ if ( $.data( this, drag.datakey ) )
76
+ return;
77
+ // initialize the drag data with copied defaults
78
+ var data = $.extend({ related:0 }, drag.defaults );
79
+ // store the interaction data
80
+ $.data( this, drag.datakey, data );
81
+ // bind the mousedown event, which starts drag interactions
82
+ $event.add( this, "touchstart mousedown", drag.init, data );
83
+ // prevent image dragging in IE...
84
+ if ( this.attachEvent )
85
+ this.attachEvent("ondragstart", drag.dontstart );
86
+ },
87
+
88
+ // destroy configured interaction
89
+ teardown: function(){
90
+ var data = $.data( this, drag.datakey ) || {};
91
+ // check for related events
92
+ if ( data.related )
93
+ return;
94
+ // remove the stored data
95
+ $.removeData( this, drag.datakey );
96
+ // remove the mousedown event
97
+ $event.remove( this, "touchstart mousedown", drag.init );
98
+ // enable text selection
99
+ drag.textselect( true );
100
+ // un-prevent image dragging in IE...
101
+ if ( this.detachEvent )
102
+ this.detachEvent("ondragstart", drag.dontstart );
103
+ },
104
+
105
+ // initialize the interaction
106
+ init: function( event ){
107
+ // sorry, only one touch at a time
108
+ if ( drag.touched )
109
+ return;
110
+ // the drag/drop interaction data
111
+ var dd = event.data, results;
112
+ // check the which directive
113
+ if ( event.which != 0 && dd.which > 0 && event.which != dd.which )
114
+ return;
115
+ // check for suppressed selector
116
+ if ( $( event.target ).is( dd.not ) )
117
+ return;
118
+ // check for handle selector
119
+ if ( dd.handle && !$( event.target ).closest( dd.handle, event.currentTarget ).length )
120
+ return;
121
+
122
+ drag.touched = event.type == 'touchstart' ? this : null;
123
+ dd.propagates = 1;
124
+ dd.mousedown = this;
125
+ dd.interactions = [ drag.interaction( this, dd ) ];
126
+ dd.target = event.target;
127
+ dd.pageX = event.pageX;
128
+ dd.pageY = event.pageY;
129
+ dd.dragging = null;
130
+ // handle draginit event...
131
+ results = drag.hijack( event, "draginit", dd );
132
+ // early cancel
133
+ if ( !dd.propagates )
134
+ return;
135
+ // flatten the result set
136
+ results = drag.flatten( results );
137
+ // insert new interaction elements
138
+ if ( results && results.length ){
139
+ dd.interactions = [];
140
+ $.each( results, function(){
141
+ dd.interactions.push( drag.interaction( this, dd ) );
142
+ });
143
+ }
144
+ // remember how many interactions are propagating
145
+ dd.propagates = dd.interactions.length;
146
+ // locate and init the drop targets
147
+ if ( dd.drop !== false && $special.drop )
148
+ $special.drop.handler( event, dd );
149
+ // disable text selection
150
+ drag.textselect( false );
151
+ // bind additional events...
152
+ if ( drag.touched )
153
+ $event.add( drag.touched, "touchmove touchend", drag.handler, dd );
154
+ else
155
+ $event.add( document, "mousemove mouseup", drag.handler, dd );
156
+ // helps prevent text selection or scrolling
157
+ if ( !drag.touched || dd.live )
158
+ return false;
159
+ },
160
+
161
+ // returns an interaction object
162
+ interaction: function( elem, dd ){
163
+ var offset = $( elem )[ dd.relative ? "position" : "offset" ]() || { top:0, left:0 };
164
+ return {
165
+ drag: elem,
166
+ callback: new drag.callback(),
167
+ droppable: [],
168
+ offset: offset
169
+ };
170
+ },
171
+
172
+ // handle drag-releatd DOM events
173
+ handler: function( event ){
174
+ // read the data before hijacking anything
175
+ var dd = event.data;
176
+ // handle various events
177
+ switch ( event.type ){
178
+ // mousemove, check distance, start dragging
179
+ case !dd.dragging && 'touchmove':
180
+ event.preventDefault();
181
+ case !dd.dragging && 'mousemove':
182
+
183
+ if ( Math.pow( event.pageX-dd.pageX, 2 ) + Math.pow( event.pageY-dd.pageY, 2 ) < Math.pow( dd.distance, 2 ) )
184
+ break; // distance tolerance not reached
185
+ event.target = dd.target; // force target from "mousedown" event (fix distance issue)
186
+ drag.hijack( event, "dragstart", dd ); // trigger "dragstart"
187
+ if ( dd.propagates ) // "dragstart" not rejected
188
+ dd.dragging = true; // activate interaction
189
+ // mousemove, dragging
190
+ case 'touchmove':
191
+ event.preventDefault();
192
+ case 'mousemove':
193
+ if ( dd.dragging ){
194
+ // trigger "drag"
195
+ drag.hijack( event, "drag", dd );
196
+ if ( dd.propagates ){
197
+ // manage drop events
198
+ if ( dd.drop !== false && $special.drop )
199
+ $special.drop.handler( event, dd ); // "dropstart", "dropend"
200
+ break; // "drag" not rejected, stop
201
+ }
202
+ event.type = "mouseup"; // helps "drop" handler behave
203
+ }
204
+ // mouseup, stop dragging
205
+ case 'touchend':
206
+ case 'mouseup':
207
+ default:
208
+ if ( drag.touched )
209
+ $event.remove( drag.touched, "touchmove touchend", drag.handler ); // remove touch events
210
+ else
211
+ $event.remove( document, "mousemove mouseup", drag.handler ); // remove page events
212
+ if ( dd.dragging ){
213
+ if ( dd.drop !== false && $special.drop )
214
+ $special.drop.handler( event, dd ); // "drop"
215
+ drag.hijack( event, "dragend", dd ); // trigger "dragend"
216
+ }
217
+ drag.textselect( true ); // enable text selection
218
+ // if suppressing click events...
219
+ if ( dd.click === false && dd.dragging )
220
+ $.data( dd.mousedown, "suppress.click", new Date().getTime() + 5 );
221
+ dd.dragging = drag.touched = false; // deactivate element
222
+ break;
223
+ }
224
+ },
225
+
226
+ // re-use event object for custom events
227
+ hijack: function( event, type, dd, x, elem ){
228
+ // not configured
229
+ if ( !dd )
230
+ return;
231
+ // remember the original event and type
232
+ var orig = { event:event.originalEvent, type:event.type },
233
+ // is the event drag related or drog related?
234
+ mode = type.indexOf("drop") ? "drag" : "drop",
235
+ // iteration vars
236
+ result, i = x || 0, ia, $elems, callback,
237
+ len = !isNaN( x ) ? x : dd.interactions.length;
238
+ // modify the event type
239
+ event.type = type;
240
+ // remove the original event
241
+ event.originalEvent = null;
242
+ // initialize the results
243
+ dd.results = [];
244
+ // handle each interacted element
245
+ do if ( ia = dd.interactions[ i ] ){
246
+ // validate the interaction
247
+ if ( type !== "dragend" && ia.cancelled )
248
+ continue;
249
+ // set the dragdrop properties on the event object
250
+ callback = drag.properties( event, dd, ia );
251
+ // prepare for more results
252
+ ia.results = [];
253
+ // handle each element
254
+ $( elem || ia[ mode ] || dd.droppable ).each(function( p, subject ){
255
+ // identify drag or drop targets individually
256
+ callback.target = subject;
257
+ // force propagtion of the custom event
258
+ event.isPropagationStopped = function(){ return false; };
259
+ // handle the event
260
+ result = subject ? $event.dispatch.call( subject, event, callback ) : null;
261
+ // stop the drag interaction for this element
262
+ if ( result === false ){
263
+ if ( mode == "drag" ){
264
+ ia.cancelled = true;
265
+ dd.propagates -= 1;
266
+ }
267
+ if ( type == "drop" ){
268
+ ia[ mode ][p] = null;
269
+ }
270
+ }
271
+ // assign any dropinit elements
272
+ else if ( type == "dropinit" )
273
+ ia.droppable.push( drag.element( result ) || subject );
274
+ // accept a returned proxy element
275
+ if ( type == "dragstart" )
276
+ ia.proxy = $( drag.element( result ) || ia.drag )[0];
277
+ // remember this result
278
+ ia.results.push( result );
279
+ // forget the event result, for recycling
280
+ delete event.result;
281
+ // break on cancelled handler
282
+ if ( type !== "dropinit" )
283
+ return result;
284
+ });
285
+ // flatten the results
286
+ dd.results[ i ] = drag.flatten( ia.results );
287
+ // accept a set of valid drop targets
288
+ if ( type == "dropinit" )
289
+ ia.droppable = drag.flatten( ia.droppable );
290
+ // locate drop targets
291
+ if ( type == "dragstart" && !ia.cancelled )
292
+ callback.update();
293
+ }
294
+ while ( ++i < len )
295
+ // restore the original event & type
296
+ event.type = orig.type;
297
+ event.originalEvent = orig.event;
298
+ // return all handler results
299
+ return drag.flatten( dd.results );
300
+ },
301
+
302
+ // extend the callback object with drag/drop properties...
303
+ properties: function( event, dd, ia ){
304
+ var obj = ia.callback;
305
+ // elements
306
+ obj.drag = ia.drag;
307
+ obj.proxy = ia.proxy || ia.drag;
308
+ // starting mouse position
309
+ obj.startX = dd.pageX;
310
+ obj.startY = dd.pageY;
311
+ // current distance dragged
312
+ obj.deltaX = event.pageX - dd.pageX;
313
+ obj.deltaY = event.pageY - dd.pageY;
314
+ // original element position
315
+ obj.originalX = ia.offset.left;
316
+ obj.originalY = ia.offset.top;
317
+ // adjusted element position
318
+ obj.offsetX = obj.originalX + obj.deltaX;
319
+ obj.offsetY = obj.originalY + obj.deltaY;
320
+ // assign the drop targets information
321
+ obj.drop = drag.flatten( ( ia.drop || [] ).slice() );
322
+ obj.available = drag.flatten( ( ia.droppable || [] ).slice() );
323
+ return obj;
324
+ },
325
+
326
+ // determine is the argument is an element or jquery instance
327
+ element: function( arg ){
328
+ if ( arg && ( arg.jquery || arg.nodeType == 1 ) )
329
+ return arg;
330
+ },
331
+
332
+ // flatten nested jquery objects and arrays into a single dimension array
333
+ flatten: function( arr ){
334
+ return $.map( arr, function( member ){
335
+ return member && member.jquery ? $.makeArray( member ) :
336
+ member && member.length ? drag.flatten( member ) : member;
337
+ });
338
+ },
339
+
340
+ // toggles text selection attributes ON (true) or OFF (false)
341
+ textselect: function( bool ){
342
+ $( document )[ bool ? "unbind" : "bind" ]("selectstart", drag.dontstart )
343
+ .css("MozUserSelect", bool ? "" : "none" );
344
+ // .attr("unselectable", bool ? "off" : "on" )
345
+ document.unselectable = bool ? "off" : "on";
346
+ },
347
+
348
+ // suppress "selectstart" and "ondragstart" events
349
+ dontstart: function(){
350
+ return false;
351
+ },
352
+
353
+ // a callback instance contructor
354
+ callback: function(){}
355
+
356
+ };
357
+
358
+ // callback methods
359
+ drag.callback.prototype = {
360
+ update: function(){
361
+ if ( $special.drop && this.available.length )
362
+ $.each( this.available, function( i ){
363
+ $special.drop.locate( this, i );
364
+ });
365
+ }
366
+ };
367
+
368
+ // patch $.event.$dispatch to allow suppressing clicks
369
+ var $dispatch = $event.dispatch;
370
+ $event.dispatch = function( event ){
371
+ if ( $.data( this, "suppress."+ event.type ) - new Date().getTime() > 0 ){
372
+ $.removeData( this, "suppress."+ event.type );
373
+ return;
374
+ }
375
+ return $dispatch.apply( this, arguments );
376
+ };
377
+
378
+ // event fix hooks for touch events...
379
+ var touchHooks =
380
+ $event.fixHooks.touchstart =
381
+ $event.fixHooks.touchmove =
382
+ $event.fixHooks.touchend =
383
+ $event.fixHooks.touchcancel = {
384
+ props: "clientX clientY pageX pageY screenX screenY".split( " " ),
385
+ filter: function( event, orig ) {
386
+ if ( orig ){
387
+ var touched = ( orig.touches && orig.touches[0] )
388
+ || ( orig.changedTouches && orig.changedTouches[0] )
389
+ || null;
390
+ // iOS webkit: touchstart, touchmove, touchend
391
+ if ( touched )
392
+ $.each( touchHooks.props, function( i, prop ){
393
+ event[ prop ] = touched[ prop ];
394
+ });
395
+ }
396
+ return event;
397
+ }
398
+ };
399
+
400
+ // share the same special event configuration with related events...
401
+ $special.draginit = $special.dragstart = $special.dragend = drag;
402
+
403
+ })( jQuery );
@@ -0,0 +1,87 @@
1
+ /*!
2
+ * jquery.event.drag.live - v 2.2
3
+ * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
4
+ * Open Source MIT License - http://threedubmedia.com/code/license
5
+ */
6
+ // Created: 2010-06-07
7
+ // Updated: 2012-05-21
8
+ // REQUIRES: jquery 1.7.x, event.drag 2.2
9
+
10
+ ;(function( $ ){
11
+
12
+ // local refs (increase compression)
13
+ var $event = $.event,
14
+ // ref the special event config
15
+ drag = $event.special.drag,
16
+ // old drag event add method
17
+ origadd = drag.add,
18
+ // old drag event teradown method
19
+ origteardown = drag.teardown;
20
+
21
+ // allow events to bubble for delegation
22
+ drag.noBubble = false;
23
+
24
+ // the namespace for internal live events
25
+ drag.livekey = "livedrag";
26
+
27
+ // new drop event add method
28
+ drag.add = function( obj ){
29
+ // call the old method
30
+ origadd.apply( this, arguments );
31
+ // read the data
32
+ var data = $.data( this, drag.datakey );
33
+ // bind the live "draginit" delegator
34
+ if ( !data.live && obj.selector ){
35
+ data.live = true;
36
+ $event.add( this, "draginit."+ drag.livekey, drag.delegate );
37
+ }
38
+ };
39
+
40
+ // new drop event teardown method
41
+ drag.teardown = function(){
42
+ // call the old method
43
+ origteardown.apply( this, arguments );
44
+ // read the data
45
+ var data = $.data( this, drag.datakey ) || {};
46
+ // bind the live "draginit" delegator
47
+ if ( data.live ){
48
+ // remove the "live" delegation
49
+ $event.remove( this, "draginit."+ drag.livekey, drag.delegate );
50
+ data.live = false;
51
+ }
52
+ };
53
+
54
+ // identify potential delegate elements
55
+ drag.delegate = function( event ){
56
+ // local refs
57
+ var elems = [], target,
58
+ // element event structure
59
+ events = $.data( this, "events" ) || {};
60
+ // query live events
61
+ $.each( events || [], function( key, arr ){
62
+ // no event type matches
63
+ if ( key.indexOf("drag") !== 0 )
64
+ return;
65
+ $.each( arr || [], function( i, obj ){
66
+ // locate the element to delegate
67
+ target = $( event.target ).closest( obj.selector, event.currentTarget )[0];
68
+ // no element found
69
+ if ( !target )
70
+ return;
71
+ // add an event handler
72
+ $event.add( target, obj.origType+'.'+drag.livekey, obj.origHandler || obj.handler, obj.data );
73
+ // remember new elements
74
+ if ( $.inArray( target, elems ) < 0 )
75
+ elems.push( target );
76
+ });
77
+ });
78
+ // if there are no elements, break
79
+ if ( !elems.length )
80
+ return false;
81
+ // return the matched results, and clenup when complete
82
+ return $( elems ).bind("dragend."+ drag.livekey, function(){
83
+ $event.remove( this, "."+ drag.livekey ); // cleanup delegation
84
+ });
85
+ };
86
+
87
+ })( jQuery );
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jquery-drag-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Charles Lowell
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-06 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Use jquery-drag special events in rails
15
+ email:
16
+ - cowboyd@thefrontside.net
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - Gemfile
23
+ - LICENSE
24
+ - README.md
25
+ - Rakefile
26
+ - jquery-drag-rails.gemspec
27
+ - lib/jquery-drag-rails.rb
28
+ - lib/jquery-drag-rails/version.rb
29
+ - vendor/assets/javascripts/jquery.event.drag.js
30
+ - vendor/assets/javascripts/jquery.event.drag.live.js
31
+ homepage: https://github.com/thefrontside/jquery-drag-rails
32
+ licenses: []
33
+ post_install_message:
34
+ rdoc_options: []
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ requirements: []
50
+ rubyforge_project:
51
+ rubygems_version: 1.8.24
52
+ signing_key:
53
+ specification_version: 3
54
+ summary: Adds dragstart, drag, dragend events to any element
55
+ test_files: []