packery-rails 1.4.1 → 1.4.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3bbc6fa5bf1ecaf07a9762810c212a598e2b40ee
4
- data.tar.gz: 472e8e39eeb775ed5100bf8936f2282c26610c9e
3
+ metadata.gz: 403d6d906ad4a8eb8e845ee90bae4b5a0bf00bbf
4
+ data.tar.gz: 9663335293dd7cb99da079aca8a3c2c70113d19b
5
5
  SHA512:
6
- metadata.gz: d46f8c6fd798274549047629786117c4e86d0c2b55bd6de4f1c8f34bb0f8ae1645cc4c1f31446e768a9ccd6c484a7a64205237c9159ebb3e1c851e993caffb47
7
- data.tar.gz: b2279f2244935d65c81c8e13018d6b7d123fb925da84eaa4c82f4d32199db31dfd09b13b70cede10d30e3750fb84f2da1c2e7e6a9588b3fea59510ca1eb740c4
6
+ metadata.gz: c44c0fef86592a0386e5b6a544244aec3a2e1efd57d7e1decaff9cba8e151a477de565742581b63f189ea5bf46a83d9253963ecfd6e5ab76cbc16e87f58fd89e
7
+ data.tar.gz: b377b52dc8f3af0e519a6aed017f9f3194b39f7242f0ddeeb7720220e16dc4d9960cb63d414e40d73ab9e96de75d47403b8a097b94168101124ac3953ee7134e
@@ -1,5 +1,5 @@
1
1
  module Packery
2
2
  module Rails
3
- VERSION = '1.4.1'.freeze
3
+ VERSION = '1.4.2'.freeze
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Packery PACKAGED v1.4.1
2
+ * Packery PACKAGED v1.4.2
3
3
  * bin-packing layout library
4
4
  *
5
5
  * Licensed GPLv3 for open source use
@@ -1722,14 +1722,19 @@ Item.prototype.getPosition = function() {
1722
1722
  var layoutOptions = this.layout.options;
1723
1723
  var isOriginLeft = layoutOptions.isOriginLeft;
1724
1724
  var isOriginTop = layoutOptions.isOriginTop;
1725
- var x = parseInt( style[ isOriginLeft ? 'left' : 'right' ], 10 );
1726
- var y = parseInt( style[ isOriginTop ? 'top' : 'bottom' ], 10 );
1725
+ var xValue = style[ isOriginLeft ? 'left' : 'right' ];
1726
+ var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
1727
+ var x = parseInt( xValue, 10 );
1728
+ var y = parseInt( yValue, 10 );
1729
+ // convert percent to pixels
1730
+ var layoutSize = this.layout.size;
1731
+ x = xValue.indexOf('%') != -1 ? ( x / 100 ) * layoutSize.width : x;
1732
+ y = yValue.indexOf('%') != -1 ? ( y / 100 ) * layoutSize.height : y;
1727
1733
 
1728
1734
  // clean up 'auto' or other non-integer values
1729
1735
  x = isNaN( x ) ? 0 : x;
1730
1736
  y = isNaN( y ) ? 0 : y;
1731
1737
  // remove padding from measurement
1732
- var layoutSize = this.layout.size;
1733
1738
  x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;
1734
1739
  y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;
1735
1740
 
@@ -1749,10 +1754,8 @@ Item.prototype.layoutPosition = function() {
1749
1754
  var xResetProperty = layoutOptions.isOriginLeft ? 'right' : 'left';
1750
1755
 
1751
1756
  var x = this.position.x + layoutSize[ xPadding ];
1752
- // set in percentage
1753
- x = layoutOptions.percentPosition && !layoutOptions.isHorizontal ?
1754
- ( ( x / layoutSize.width ) * 100 ) + '%' : x + 'px';
1755
- style[ xProperty ] = x;
1757
+ // set in percentage or pixels
1758
+ style[ xProperty ] = this.getXValue( x );
1756
1759
  // reset other property
1757
1760
  style[ xResetProperty ] = '';
1758
1761
 
@@ -1762,10 +1765,8 @@ Item.prototype.layoutPosition = function() {
1762
1765
  var yResetProperty = layoutOptions.isOriginTop ? 'bottom' : 'top';
1763
1766
 
1764
1767
  var y = this.position.y + layoutSize[ yPadding ];
1765
- // set in percentage
1766
- y = layoutOptions.percentPosition && layoutOptions.isHorizontal ?
1767
- ( ( y / layoutSize.height ) * 100 ) + '%' : y + 'px';
1768
- style[ yProperty ] = y;
1768
+ // set in percentage or pixels
1769
+ style[ yProperty ] = this.getYValue( y );
1769
1770
  // reset other property
1770
1771
  style[ yResetProperty ] = '';
1771
1772
 
@@ -1773,15 +1774,17 @@ Item.prototype.layoutPosition = function() {
1773
1774
  this.emitEvent( 'layout', [ this ] );
1774
1775
  };
1775
1776
 
1777
+ Item.prototype.getXValue = function( x ) {
1778
+ var layoutOptions = this.layout.options;
1779
+ return layoutOptions.percentPosition && !layoutOptions.isHorizontal ?
1780
+ ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';
1781
+ };
1776
1782
 
1777
- // transform translate function
1778
- var translate = is3d ?
1779
- function( x, y ) {
1780
- return 'translate3d(' + x + 'px, ' + y + 'px, 0)';
1781
- } :
1782
- function( x, y ) {
1783
- return 'translate(' + x + 'px, ' + y + 'px)';
1784
- };
1783
+ Item.prototype.getYValue = function( y ) {
1784
+ var layoutOptions = this.layout.options;
1785
+ return layoutOptions.percentPosition && layoutOptions.isHorizontal ?
1786
+ ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';
1787
+ };
1785
1788
 
1786
1789
 
1787
1790
  Item.prototype._transitionTo = function( x, y ) {
@@ -1806,11 +1809,7 @@ Item.prototype._transitionTo = function( x, y ) {
1806
1809
  var transX = x - curX;
1807
1810
  var transY = y - curY;
1808
1811
  var transitionStyle = {};
1809
- // flip cooridinates if origin on right or bottom
1810
- var layoutOptions = this.layout.options;
1811
- transX = layoutOptions.isOriginLeft ? transX : -transX;
1812
- transY = layoutOptions.isOriginTop ? transY : -transY;
1813
- transitionStyle.transform = translate( transX, transY );
1812
+ transitionStyle.transform = this.getTranslate( transX, transY );
1814
1813
 
1815
1814
  this.transition({
1816
1815
  to: transitionStyle,
@@ -1821,6 +1820,21 @@ Item.prototype._transitionTo = function( x, y ) {
1821
1820
  });
1822
1821
  };
1823
1822
 
1823
+ Item.prototype.getTranslate = function( x, y ) {
1824
+ // flip cooridinates if origin on right or bottom
1825
+ var layoutOptions = this.layout.options;
1826
+ x = layoutOptions.isOriginLeft ? x : -x;
1827
+ y = layoutOptions.isOriginTop ? y : -y;
1828
+ x = this.getXValue( x );
1829
+ y = this.getYValue( y );
1830
+
1831
+ if ( is3d ) {
1832
+ return 'translate3d(' + x + ', ' + y + ', 0)';
1833
+ }
1834
+
1835
+ return 'translate(' + x + ', ' + y + ')';
1836
+ };
1837
+
1824
1838
  // non transition + transform support
1825
1839
  Item.prototype.goTo = function( x, y ) {
1826
1840
  this.setPosition( x, y );
@@ -1900,28 +1914,36 @@ Item.prototype._transition = function( args ) {
1900
1914
 
1901
1915
  };
1902
1916
 
1903
- var itemTransitionProperties = transformProperty && ( utils.toDashed( transformProperty ) +
1904
- ',opacity' );
1917
+ // dash before all cap letters, including first for
1918
+ // WebkitTransform => -webkit-transform
1919
+ function toDashedAll( str ) {
1920
+ return str.replace( /([A-Z])/g, function( $1 ) {
1921
+ return '-' + $1.toLowerCase();
1922
+ });
1923
+ }
1924
+
1925
+ var transitionProps = 'opacity,' +
1926
+ toDashedAll( vendorProperties.transform || 'transform' );
1905
1927
 
1906
1928
  Item.prototype.enableTransition = function(/* style */) {
1907
- // only enable if not already transitioning
1908
- // bug in IE10 were re-setting transition style will prevent
1909
- // transitionend event from triggering
1929
+ // HACK changing transitionProperty during a transition
1930
+ // will cause transition to jump
1910
1931
  if ( this.isTransitioning ) {
1911
1932
  return;
1912
1933
  }
1913
1934
 
1914
- // make transition: foo, bar, baz from style object
1915
- // TODO uncomment this bit when IE10 bug is resolved
1916
- // var transitionValue = [];
1935
+ // make `transition: foo, bar, baz` from style object
1936
+ // HACK un-comment this when enableTransition can work
1937
+ // while a transition is happening
1938
+ // var transitionValues = [];
1917
1939
  // for ( var prop in style ) {
1918
1940
  // // dash-ify camelCased properties like WebkitTransition
1919
- // transitionValue.push( toDash( prop ) );
1941
+ // prop = vendorProperties[ prop ] || prop;
1942
+ // transitionValues.push( toDashedAll( prop ) );
1920
1943
  // }
1921
1944
  // enable transition styles
1922
- // HACK always enable transform,opacity for IE10
1923
1945
  this.css({
1924
- transitionProperty: itemTransitionProperties,
1946
+ transitionProperty: transitionProps,
1925
1947
  transitionDuration: this.layout.options.transitionDuration
1926
1948
  });
1927
1949
  // listen for transition end event
@@ -2124,7 +2146,7 @@ return Item;
2124
2146
  }));
2125
2147
 
2126
2148
  /*!
2127
- * Outlayer v1.4.0
2149
+ * Outlayer v1.4.1
2128
2150
  * the brains and guts of a layout library
2129
2151
  * MIT license
2130
2152
  */
@@ -2539,7 +2561,7 @@ Outlayer.prototype._setContainerMeasure = function( measure, isWidth ) {
2539
2561
  Outlayer.prototype._emitCompleteOnItems = function( eventName, items ) {
2540
2562
  var _this = this;
2541
2563
  function onComplete() {
2542
- _this.emitEvent( eventName + 'Complete', [ items ] );
2564
+ _this.dispatchEvent( eventName + 'Complete', null, [ items ] );
2543
2565
  }
2544
2566
 
2545
2567
  var count = items.length;
@@ -2563,6 +2585,32 @@ Outlayer.prototype._emitCompleteOnItems = function( eventName, items ) {
2563
2585
  }
2564
2586
  };
2565
2587
 
2588
+ /**
2589
+ * emits events via eventEmitter and jQuery events
2590
+ * @param {String} type - name of event
2591
+ * @param {Event} event - original event
2592
+ * @param {Array} args - extra arguments
2593
+ */
2594
+ Outlayer.prototype.dispatchEvent = function( type, event, args ) {
2595
+ // add original event to arguments
2596
+ var emitArgs = event ? [ event ].concat( args ) : args;
2597
+ this.emitEvent( type, emitArgs );
2598
+
2599
+ if ( jQuery ) {
2600
+ // set this.$element
2601
+ this.$element = this.$element || jQuery( this.element );
2602
+ if ( event ) {
2603
+ // create jQuery event
2604
+ var $event = jQuery.Event( event );
2605
+ $event.type = type;
2606
+ this.$element.trigger( $event, args );
2607
+ } else {
2608
+ // just trigger with type if no event available
2609
+ this.$element.trigger( type, args );
2610
+ }
2611
+ }
2612
+ };
2613
+
2566
2614
  // -------------------------- ignore & stamps -------------------------- //
2567
2615
 
2568
2616
 
@@ -3532,7 +3580,7 @@ return Item;
3532
3580
  }));
3533
3581
 
3534
3582
  /*!
3535
- * Packery v1.4.1
3583
+ * Packery v1.4.2
3536
3584
  * bin-packing layout library
3537
3585
  *
3538
3586
  * Licensed GPLv3 for open source use
@@ -3619,13 +3667,23 @@ Packery.prototype._create = function() {
3619
3667
  };
3620
3668
 
3621
3669
  this.handleUIDraggable = {
3622
- start: function handleUIDraggableStart( event ) {
3670
+ start: function handleUIDraggableStart( event, ui ) {
3671
+ // HTML5 may trigger dragstart, dismiss HTML5 dragging
3672
+ if ( !ui ) {
3673
+ return;
3674
+ }
3623
3675
  _this.itemDragStart( event.currentTarget );
3624
3676
  },
3625
3677
  drag: function handleUIDraggableDrag( event, ui ) {
3678
+ if ( !ui ) {
3679
+ return;
3680
+ }
3626
3681
  _this.itemDragMove( event.currentTarget, ui.position.left, ui.position.top );
3627
3682
  },
3628
- stop: function handleUIDraggableStop( event ) {
3683
+ stop: function handleUIDraggableStop( event, ui ) {
3684
+ if ( !ui ) {
3685
+ return;
3686
+ }
3629
3687
  _this.itemDragEnd( event.currentTarget );
3630
3688
  }
3631
3689
  };
@@ -3851,7 +3909,7 @@ Packery.prototype._bindFitEvents = function( item ) {
3851
3909
  if ( ticks != 2 ) {
3852
3910
  return;
3853
3911
  }
3854
- _this.emitEvent( 'fitComplete', [ item ] );
3912
+ _this.dispatchEvent( 'fitComplete', null, [ item ] );
3855
3913
  }
3856
3914
  // when item is laid out
3857
3915
  item.on( 'layout', function() {
@@ -3996,7 +4054,7 @@ Packery.prototype._getDragEndLayoutComplete = function( elem, item ) {
3996
4054
 
3997
4055
  // emit item drag event now that everything is done
3998
4056
  if ( itemNeedsPositioning ) {
3999
- _this.emitEvent( 'dragItemPositioned', [ item ] );
4057
+ _this.dispatchEvent( 'dragItemPositioned', null, [ item ] );
4000
4058
  }
4001
4059
  // listen once
4002
4060
  return true;
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packery-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leonid Beder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-08 00:00:00.000000000 Z
11
+ date: 2015-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties